Dlaczego się nie kompiluje?

Dlaczego się nie kompiluje?
Mateusz Jurkiewicz
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 5 lat
  • Postów:4
0

Witam,
Zaczynam przygodę z javą, może mi ktoś powiedzieć dlaczego ten kod nie chce się skompilować?
Program zawiera trzy klasy.
Pierwsza:

Kopiuj
package portalgramax;
import java.util.*;

public class PortalGraMax {
    
    private PomocnikGry pomocnik = new PomocnikGry();
    private ArrayList<Portal> listaPortali = new ArrayList<Portal>();
    private int iloscRuchow = 0;
    
    private void przygotujGre(){
        Portal pierwszy = new Portal();
        pierwszy.setNazwa("onet.pl");
        Portal drugi = new Portal();
        drugi.setNazwa("wp.com");
        Portal trzeci = new Portal ();
        trzeci.setNazwa("Go2.com");
        listaPortali.add(pierwszy);
        listaPortali.add(drugi);
        listaPortali.add(trzeci);
        
        System.out.println("Twoim celem jest zatopienie trzech portali.");
        System.out.println("onet.pl, wp.com, Go2.com");
        System.out.println("Postaraj się je zatopić w jak najmniejszej liczbie ruchów.");
        
        for (Portal rozmieszczanyPortal : listaPortali) {
            ArrayList<String> nowePolozenie = pomocnik.rozmiescPortal (3);
            rozmieszczanyPortal.setPolaPolozenia(nowePolozenie);
        }
    }
    private void rozpocznijGre(){
        while (!listaPortali.isEmpty()) {
            String ruchGracza = pomocnik.pobierzDaneWejsciowe("Podaj pole: ");
            sprawdzRuchGracza (ruchGracza);
        }
        zakonczGre();
    }
    
    private void sprawdzRuchGracza (String ruch) {
        
        iloscRuchow++;
        String wynik = "pudło";
        
        for (Portal portalDoSprawdzenia : listaPortali) {
            wynik = portalDoSprawdzenia.sprawdz(ruch);
            if (wynik.equals("trafiony")) {
                break;
            }
            if (wynik.equals("zatopiony")) {
                listaPortali.remove(portalDoSprawdzenia);
                break;
            }
        }
        System.out.println(wynik);
    }
    
    private void zakonczGre() {
        System.out.println ("Wszystkie Portale zostały zatopione! Teraz Twoje informacje nie mają już znaczenia.");
        if (iloscRuchow <= 18) {
            System.out.println ("Wykonałeś jedynie" + iloscRuchow + "ruchów.");
            System.out.println ("Wydostałeś się zanim Twoje informacje zatonęły");
        } else {
            System.out.println ("Ale się grzebałeś! Wykonałeś aż "+ iloscRuchow + "ruchów.");
            System.out.println ("Chujowo...");
        }
        
    }
    
    
    
    
    public static void main(String[] args) {
        PortalGraMax gra = new PortalGraMax();
        gra.przygotujGre();
        gra.rozpocznijGre();
    
    }
}

Druga:

Kopiuj
package portalgramax;
import java.util.*;




class Portal {
private ArrayList<String> polaPolozenia;
private String nazwa;

public void setPolaPolozenia(ArrayList<String> ppol) {
    polaPolozenia = ppol;
}

public void setNazwa(String nzwPortalu) {
    nazwa = nzwPortalu;
}

public String sprawdz(String ruch) {
    String wynik = "pudło";
    int indeks = polaPolozenia.indexOf(ruch);
    if (indeks>= 0) {
        polaPolozenia.remove(indeks);
        
        if (polaPolozenia.isEmpty()) {
            wynik = "zatopiony";
            System.out.println ("Auć! Zatopiłeś portal "+ nazwa + " : (");
        } else {
            wynik = "trafiony";
        }
    }
    return wynik;
}
    
}

Trzecia:

Kopiuj
package portalgramax;

import java.io.*;
import java.util.*;
import java.io.IOException.*;


public class PomocnikGry {
    private static final String alfabet = "abcdefg";
    private final int dlugoscPlanszy = 7;
    private final int wielkoscPlanszy = 49;
    private final int [] plansza = new int[wielkoscPlanszy];
    private int iloscPortali = 0;
    
public String pobierzDaneWejsciowe (String komunikat){
    String daneWejsciowe = null;
    System.out.print(komunikat + " ");
    try{
        BufferedReader is = new BufferedReader(
            new InputStreamReader(System.in));
        daneWejsciowe = is.readLine();
        if (daneWejsciowe.length() == 0) return null;
    } catch (IOException e) { 
        System.out.println ("I0Exception: " + e);
    }
    return daneWejsciowe.toLowerCase();
    }

public ArrayList rozmiescPortal (int wielkoscPortalu) {
    ArrayList <String> zajetePola = new ArrayList <>();
    String[] wspolrzedneLnc = new String [wielkoscPortalu];
    String pomoc = null;
    int [] wspolrzedne = new int[wielkoscPortalu];
    int prob = 0;
    boolean powodzenie = false;
    int polozenie = 0;
    
    iloscPortali++;
    int inkr = 1;
    if((iloscPortali % 2) == 1) {
        inkr = dlugoscPlanszy;
    }
    
    while (!powodzenie & prob++ < 200) {
        polozenie = (int) (Math.random()*wielkoscPlanszy);
        //System.out.print ("sprawdz" + polozenie);
        int x = 0;
        powodzenie = true;
        while (powodzenie && x<wielkoscPortalu) {
            if((plansza[polozenie]) == 0){
            wspolrzedne [x++] = polozenie;
            polozenie += inkr;
            if(polozenie >= wielkoscPlanszy) {
                powodzenie = false;
            }
            if (x>0 & (polozenie % dlugoscPlanszy == 0)) {
                powodzenie = false;
            
        } else {
                // System.out.print (" już zajęte " + locatioin);
                powodzenie = false;
                }
        }
    }
    
}

int x=0;
int wiersz=0;
int kolumna=0;
//System.out.println("\n");
while (x<wielkoscPortalu) {
    plansza[wspolrzedne[x]] = 1;
    wiersz = (int) (wspolrzedne[x]/dlugoscPlanszy);
    kolumna = wspolrzedne [x] % dlugoscPlanszy;
    pomoc = String.valueOf(alfabet.charAt(kolumna));
    zajetePola.add(pomoc.concat(Integer.toString(wiersz)));
    x++;
    // System.out.print(" współrzędne "+x+" = " + zajetePola.get(x-1));
}
//System.out.println("\n");
return zajetePola;
}
}


edytowany 1x, ostatnio: Shalom
jarekr000000
Zaczynam przygodę... i tak ładnie wstawiony kod w znaczniki. Da się czytać. Może to fejk 🤔?
elwis
To zacznij od czytania komunikatów kompilatora. Wiesz, że one tam nie są dla picu? xD
cerrato
@jarekr000000: odnośnie formatowania kodu - raczej bym ten fakt powiązał z edytowany 1x, ostatnio: Shalom ;)
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
5

Może, nie uruchomiłeś kompilatora?


jeden i pół terabajta powinno wystarczyć każdemu
baant
  • Rejestracja:ponad 11 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:Wrocław
  • Postów:524
0

Jakiś błąd wyskakuje? Cokolwiek?

4M
  • Rejestracja:około 6 lat
  • Ostatnio:ponad rok
  • Postów:6
6

To przez polskie nazwy zmiennych.

gk1982
  • Rejestracja:prawie 14 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Łódź
  • Postów:541
2

W pierwszej w linijce 26 masz spacje niepotrzebna:

Kopiuj
ArrayList<String> nowePolozenie = pomocnik.rozmiescPortal (3);

Don't give up learning JavaScript!
It is enjoyable to make things visible which are invisible.
Każdy programista przybywający z innego miasta jest fachowcem.
Anyone who stops learning is old, whether at twenty or eighty.
Anyone who keeps learning stays young.
The greatest thing in life is to keep your mind young.
Mateusz Jurkiewicz
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 5 lat
  • Postów:4
0

Rozpoczyna się uruchamianie, wyświetlają się nazwy portali i kompilacja się nie kończy. Nie wyskakują żadne błędy. Zatrzymuje się na 0%.

baant
  • Rejestracja:ponad 11 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:Wrocław
  • Postów:524
0

jak już ci sie jakieś printlny wyświetlają to kompilacja się skończyła ._.

edit: odpal z debuggerem i zobacz co sie dzieje

edytowany 1x, ostatnio: baant
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:30 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
1
gk1982 napisał(a):

W pierwszej w linijce 26 masz spacje niepotrzebna:

Kopiuj
ArrayList<String> nowePolozenie = pomocnik.rozmiescPortal (3);

@gk1982 byłeś blisko. Metoda pomocnik.rozmiescPortal(int) to jakaś sieka. Program się na niej wiesza XD


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
Mateusz Jurkiewicz
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 5 lat
  • Postów:4
0

Dzięki za odpowiedzi!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.