Moi,
En keksi mikä tässä voisi olla pielessä. Koodista varmaan ymmärrät mitä yritän tehdä.
public static Point[] luoKalat (){ Point kala[] = new Point[5]; Random generator = new Random(); for (int i=0; i<5; i++ ){ //Tässä: kala[i].x = generator.nextInt(28); kala[i].y = generator.nextInt(28); System.out.println("Kala " + i+1 + ": " + kala[i]); } return kala; }
Exception in thread "main" java.lang.NullPointerException at kalapeli.luoKalat(kalapeli.java:26) at kalapeli.main(kalapeli.java:9)
Tuo 9. rivi on se jossa kutsun tuota:
Point kalat[] = new Point[5]; kalat = luoKalat();
Mutuilen, että Point[] kalat.. (hakasulkujen positio)
EDIT: http://download.oracle.com/javase/tutorial/java/
Vaihdoin, mutta sama virhe tulee samassa kohdassa.
Tässä koko koodi: http://pastebin.com/48sSHmj9
Eikös nuo alkiot pitäisi alustaa myöskin, eli ennen kuin mitään sijoitetaan niihin, ne alustetaan tyyliin
kala[i] = new Point();
Kiitoksia.
Tässä mahtava pilkkimispeli jonka tein: http://www.viewportal.net/upload/pilkkipeli.zip
const int MAX_KALAT = 5; Point[] kalat; kalat = new Point[MAX_KALAT]; for(int i = 0; i < MAX_KALAT; i++){ kalat[i] = luokala(); } public Point luokala(){ return new Point(x, y); }
Ainakin itse lähtisin jokseenkin tällä tavalla ratkomaan.
Miksi public?
Ja miksi yleensäkään erillinen funktio, josta ilmiselvästi ei ole mitään etua?
Kuvittelin tuon kalan luomiseen liittyvän jotain muutakin. Julkinen määrittely siksi, että se tuli ensimmäisenä mieleen. Koodia oli tarkoitus soveltaa. Jos ei aukene, niin sitten ei aukene. Nyt kuitenkin oli taulukotkin hukassa kysyjältä..
Joo kyseessä oli mun yks ensimmäisistä java-sovelluksista, piti tehdä kouluun joku pikku peli ja tässä pelissä oli jo enemmän asiaa kuin koko kurssilla... Kiitos avusta! Tässä lopullinen koodi, jos kiinnostaa. Parannettavaa löydän itsekin, mutta en vielä kerennyt muuttamaan.
http://pastebin.com/QSkg7G8u
Aihe on jo aika vanha, joten et voi enää vastata siihen.