public GameofLife(int gen)
{
generations = gen;
life = new boolean[20][20];
try {
Scanner pablo = new Scanner(new File("life100.txt"));
pablo.nextInt(); //eliminate 100 (number of files in the list)
while (pablo.hasNextInt())
{
life[pablo.nextInt()][pablo.nextInt()] = true;
}
} catch(Exception e){}
out.print(Arrays.deepToString(life));
}
我正在尝试从文本文件中读取数组的 100 对 int 坐标,但由于某种原因,此设置无法获取每个数字;当它读到第 3 行后,它就停止了。 文本文件位于设置中
100
1 3
1 7
1 8
1 11
1 12
1 17
2 1
2 5
2 8
3 7
3 13
3 16
3 20
4 1
4 5
4 15
4 17
一直到 19 18。然而,当我使用 out.print(Arrays.deepToString(life));
打印它时,第三行之后的每个位置都是 false,而我将其设置为使文本文件中的每一对坐标在矩阵中都以 true 开头。
这是我的 nextInt()
扫描仪功能的问题吗?或者是其他东西?修复它的最佳方法是什么?
请我需要帮助。欢迎任何建议、评论或想法。谢谢
最佳答案
如果这是实际的文件内容,那么当它读取 3 20
时,看起来您超出了数组的边界,没有 [3][20]
在 life
中分配,它只会发送到 [3][19]
。
这被您的 try/catch block 所掩盖,该 block 捕获并删除ArrayIndexOutOfBoundsException
。正如评论所建议的,打印堆栈跟踪是比不执行任何操作更好的默认捕获行为,这会很快揭示此错误。
尝试将 e.printStackTrace();
放入 catch block 中,看看我在说什么。
由于 Java 数组是从 0 开始索引的,如果您的文件包含从 1 到 20 的行+列位置,则需要将文件中的值减去 1,然后再将其添加到数组中,例如
life[pablo.nextInt() - 1][pablo.nextInt() - 1] = true;
关于java - 在 Java 中,为什么 nextInt() 不从此文本文件中检索每个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30153840/