2次元配列のオブジェクトをインスタンス化する方法に問題があります。私は、私が得ているエラーを再現するために、小さなサンプルの下でデモンストレーションを試みました。Javaで二次元配列を正しくインスタンス化する方法
私はという名前のこのクラスを持っています。基本的に1文字を格納するノードです。このクラスは、というクラス内で、テストの二次元属性として使用されます。配列のサイズを設定し、instantiate()メソッドの内部でインスタンス化するためにユーザー入力を使用しました。次に、マップを設定メソッドを使用して設定しようとしています。
Eclipseのコンソール出力:
Exception in thread "main" java.lang.NullPointerException at Test.populate(Main.java:44) at Main.main(Main.java:77)
マイ入力された:以下
が、私はこのエラーを再現するために使用していたコードです: しかし、コンパイラは私に次のエラーメッセージが表示されますEnter height: 3 Enter width: 3
クラスノード:
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;
}
}
クラステスト:
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;
}
}
主な方法:
public class Main {
public static void main(String[] args) {
Test testing = new Test();
testing.instantiate();
testing.populate();
testing.print();
}
}
コードもここで見ることができます:http://pastebin.com/agFMmB38
私はまだ(C++から来る)は、Javaに慣れていますので、彼らはいくつかを持っています私はまだそれを把握することができなかった違い。
ご協力いただければ幸いです。 ありがとうございました!
これは機能しました。本当にありがとう、私はこれと数時間苦労していて、それは本当に簡単でした。 – leandrocoutom
いつもお世話になります! – ifly6