我试图从文本文件中读取一个网格来构建一个图表。Java String.charAt()无法正常工作
目标节点用X
表示,而其他节点用.
表示。
我也有行数和列数。所以,我基本上只是尝试读取每行的下一行,然后通过传递列位置的迭代器并在X
上检查它是否应该标记为目标节点。
goalGraph = new int[rows][cols];
for (int i = 0; i < rows; i++) {
String readLine = in.nextLine();
System.out.println(readLine);
for (int ii = 0; ii < cols; ii++) {
char c = readLine.charAt(ii);
if (c == 'x') {
goalGraph[i][ii] = 1;
}
else {
goalGraph[i][ii] = 0;
System.out.print(".");
}
}
}
,但我一直在index (0)
得到一个arrayoutofbounds
错误。
另一个奇怪的事情是,它不打印readLine
当下代码实现的,但服用它,所以它看起来像:
goalGraph = new int[rows][cols];
for (int i = 0; i < rows; i++) {
String readLine = in.nextLine();
System.out.println(readLine);
/**
for (int ii = 0; ii < cols; ii++) {
char c = readLine.charAt(ii);
if (c == 'x') {
goalGraph[i][ii] = 1;
}
else {
goalGraph[i][ii] = 0;
System.out.print(".");
}
}
**/
}
其结果是,被读取的线被打印,并且我得到正确的字符串:
X.....
...X..
......
.X....
任何人都可以指向正确的方向吗?
谢谢!
您能向我们展示您正在从文本文件中读取的“网格”吗? – Killrawr
它看起来像“X ....”等......我在帖子中没有线条之间的空白。 我不知道为什么它不让我做多行,所以我不得不打两次“输入”。 – user1667270
它对我来说没有任何意义,因为如果我像第二个代码示例中那样删除整个char块,print语句开始工作并显示该行确实正在被正确读取。 然而,被注释掉的块在print语句下面,所以我不知道为什么当代码没有被注释掉时,至少第一个print语句不工作。 – user1667270