PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Java] Anfänger Problem



aswkman
06-04-2004, 12:23
Wieso bekomme ich beim ausführen dieses Codes immer diese Fehlermeldung???

public class test {
public static void main(String args[]) {
Kind kind = new Kind();
System.out.println(kind.vater[0].test);
}
}

class Vater {
int test;
}
class Kind {
Vater[] vater = new Vater[5];
}

Fehlermeldung:

Exception in thread "main" java.lang.NullPointerException
at test.main(test.java:5)

Hoffe jemand kann mir antworten!!!!!

axeljaeger
06-04-2004, 13:09
weil kind.vater[0] null ist

aswkman
06-04-2004, 13:21
Wieso soll kind.vater[0] = null sein wenn ich mit

Vater[] vater = new Vater[5];

5 Objekte von Typ Vater anlege???

axeljaeger
06-04-2004, 13:40
Du legst ein Array mit 5 Elementen an, die einzelnen Elemente sind aber noch nicht initialisiert.

peschmae
06-04-2004, 14:20
class Kind {
Vater[] vater = new Vater[5];

Kind() {
for (int i = 0; i < vater.length(); i++)
vater[i] = new Vater();
}
}


ausserdem sind die "int test" auch noch nicht initialisiert (es sei denn Java mache das schon - möglich. afair sind die aber dann auf NAN (not a number) oder so initialisiert)

MfG Peschmä

axeljaeger
06-04-2004, 14:58
Java initalisiert afaik alle ints mit 0.

aswkman
06-04-2004, 14:59
Dank an peschmae . Jetzt funktionierts!!!!!!!!!

peschmae
06-04-2004, 18:27
axeljaeger: Stimmt. Interessannterweise revoltiert der Compiler bei mir (der von Kaffe) wenn man einfach so was macht:


int i;
System.out.println(i);


wenn der int in nem Objekt versteckt ist sagt er nix und dann isser 0

MfG Peschmä

anda_skoa
06-04-2004, 20:11
Member Variablen werden bei Instanzerzeugung initialisiert, lokale Variablen nicht.

Da meldet sich auch der javac von Sun.

Ciao,
_