【发布时间】:2012-09-13 01:20:14
【问题描述】:
我正在尝试从文本文件中读取网格以构建图表。
目标节点用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....
谁能指出我正确的方向?
谢谢!
【问题讨论】:
-
你能告诉我们你在文本文件中读取的
grid吗? -
它看起来像“X....”等...我在帖子中没有行之间的间隙。我不知道为什么它不让我做多行,所以我不得不按两次“输入”。
-
这对我来说没有任何意义,因为如果我像第二个代码示例中那样删除整个 char 块,打印语句开始工作并显示该行确实被正确读取。然而,被注释掉的块在 print 语句的下方,所以我不知道为什么当代码没有被注释掉时,至少第一个 print 语句甚至不起作用。