Ich habe Probleme, bi-dimensionales Array von Objekten zu instanziieren. Ich habe versucht, unter einer kleinen Probe zu demonstrieren, um den Fehler zu reproduzieren, den ich bekomme.Wie man ein zweidimensionales Array in Java richtig instanziiert
Ich habe diese Klasse mit dem Namen Knoten, die grundsätzlich ein Zeichen speichert. Diese Klasse wird innerhalb der Klasse Test als zweidimensionales Attribut verwendet. Ich habe einige Benutzereingaben verwendet, um die Größe des Arrays zu ermitteln und es in der instanziate() -Methode zu instanziieren. Dann versuche ich, die Karte mit einer Set-Methode zu bevölkern. Allerdings gibt der Compiler mir die folgende Fehlermeldung:
Eclipse-Console Output:
Exception in thread "main" java.lang.NullPointerException at Test.populate(Main.java:44) at Main.main(Main.java:77)
Meine Eingabe war:
Enter height: 3 Enter width: 3
Unten ist der Code ich diesen Fehler zu reproduzieren bin mit:
KnotenKlasse:
class Node {
private char content;
Node(){
this.content = ' ';
}
Node(Node node){
this.content = node.getContent();
}
//Setter
public void setContent(char c) {
this.content = c;
}
//Getter
public char getContent() {
return this.content;
}
}
Klasse Test:
class Test {
private Node[][] map;
private int height, width;
public void instantiate(){
Scanner reader = new Scanner(System.in);
System.out.println("Enter height: ");
this.height = reader.nextInt();
System.out.println("Enter width: ");
this.width = reader.nextInt();
map = new Node[height][width];
reader.close();
}
public void populate(){
for(int i=0;i<height;i++)
for(int j=0;j<width;j++){
if((i+j) %2 == 0)
map[i][j].setContent('a');
else
map[i][j].setContent('b');
}
/*
* a b a b
* b a b a ...
* a b a b
* b a b a
* . . .
*/
}
public void print(){
for(int i=0;i<height;i++){
for(int j=0;j<width;j++){
System.out.print(map[i][j].getContent());
}
System.out.println();
}
}
public Node[][] getMap(){
return this.map;
}
}
Main-Methode:
public class Main {
public static void main(String[] args) {
Test testing = new Test();
testing.instantiate();
testing.populate();
testing.print();
}
}
Der Code kann auch hier gesehen werden: http://pastebin.com/agFMmB38
ich noch immer auf Java (aus Richtung C++) verwendet werden, so dass sie einige Unterschiede, die ich noch nicht herausfinden konnte.
Jede Hilfe würde sehr geschätzt werden. Vielen Dank!
Es hat funktioniert! Vielen Dank, ich habe ein paar Stunden damit zu kämpfen und es war wirklich einfach. – leandrocoutom
Immer glücklich zu helfen! – ifly6