いくつかの値を含むファイルがあります:
11
8
0 0 1 0 0 0 0 0 1 0 0
0 0 0 1 0 0 0 1 0 0 0
0 0 1 1 1 1 1 1 1 0 0
0 1 1 0 1 1 1 0 1 1 0
1 1 1 1 1 1 1 1 1 1 1
1 0 1 1 1 1 1 1 1 0 1
1 0 1 0 0 0 0 0 1 0 1
0 0 0 1 1 0 1 1 0 0 0
これらの値を 2D に読み込む必要がありますArrayList
。最初の 2 つの値 (11 と 8) は、それぞれ行と列の数になります。コードは次のとおりです。
Scanner scanner = new Scanner(file);
int x, y;
x = scanner.nextInt();
System.out.println(x + " has been read");
y = scanner.nextInt();
System.out.println(y + " has been read");
ArrayList<ArrayList<Boolean>> pixelMap;
pixelMap = new ArrayList<ArrayList<Boolean>>();
ArrayList<Boolean> buffer_line = new ArrayList<Boolean>();
Boolean buffer;
for (int i = 0; i < x; i++){
for (int j = 0; j < y; j++){
buffer = scanner.nextBoolean();
System.out.println(buffer + " has been read");
//buffer_line.add(buffer);
}
//pixelMap.add(buffer_line);
//buffer_line.clear();
}
問題は、プログラムが最初の 2 つの数値を正常に読み取り、ブール値になると、オンラインで InputMismatch 例外をスローすることです。
buffer = scanner.nextBoolean();
だから私はその理由を理解できません。0
次に読む必要があり、ブール値です-では、実際に何が一致していないのでしょうか?
buffer
また、 type を integer に変更してから assign するとscanner.nextInt()
、プログラムはすべての値を適切に読み取るため、出力にすべての値が表示されることも指摘します。もちろん、それをArrayList
機能させるために Integer に変更できますが、ブール値のみを保持するため、意味的に間違っています。誰でも問題を見つけるのを手伝ってもらえますか?