Java String.charAt()工作不正常

Java String.charAt()工作不正常,java,string,char,Java,String,Char,我试图从一个文本文件中读入一个网格,从中构造一个图形 目标节点由X表示,而其他节点由表示 我有行数和列数。因此,我基本上只是尝试读取每行的下一行,然后通过传递列位置的迭代器来获取每个列位置的字符,并对照X检查它是否应该标记为目标节点 goalGraph = new int[rows][cols]; for (int i = 0; i < rows; i++) { String readLine = in.nextLine(); System.out.println(read

我试图从一个文本文件中读入一个网格,从中构造一个图形

目标节点由
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(".");
        }
    }
}
因此,将打印正在读取的行,并获得正确的字符串:

X.....

...X..

......

.X....
谁能给我指出正确的方向吗


谢谢

您显示的代码没有明显的错误。我们需要看到更多。可能发生的情况是,您的输入中实际上没有
行数据。如何生成
?中的
是什么类型,它是如何初始化的?Bounds arrayoutofbounds错误发生在哪一行?

您能给我们看一下您在文本文件中读取的
网格吗?它看起来像“X…”等。。。我在帖子里没有字里行间的空隙。我不知道为什么它不允许我做多行,所以我不得不按两次“enter”键。这对我来说没有任何意义,因为如果我像第二个代码示例中那样删除整个char块,print语句开始工作,并显示该行确实被正确读入。但是被注释掉的块在print语句下面,所以我不知道为什么在代码没有注释掉的情况下,至少第一个print语句不起作用。出于某种原因,我似乎无法插入换行符,所以我为这个块道歉。在执行此操作之前,我正在打印“rows”和“cols”,它们被正确地读入,因此在本例中,rows=5和cols=6。它们是通过读取文本文件中的前两个整数值生成的。”in'是扫描程序文件的初始化方式:scanner in=new scanner(新文件(文件名));实际上没有指定任何行,它只是说“java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0”,如上所述,它没有任何意义,因为当我注释掉所有字符操作时,我打印“readLine”的行,即从文本文件读入的行,它确实起作用,并显示它被正确读入。为什么第一次打印操作下面的代码会受到后面的操作的影响?它是否应该在所有的角色恶作剧开始之前至少打印一次读入行?@user1667270:你真的应该得到你的异常的完整堆栈跟踪-它甚至可能不会在你认为它是的代码中生成。如果在命令行上运行,它应该只打印它。如果是GUI,则可能有一个日志文件可以从中导出,该文件具有完整的堆栈跟踪。@user1667270:如果您的输出被缓冲,则后续的错误可能会导致previous
print
s无法到达终端。尝试在
打印后放入
System.out.flush()
(这不太可能修复它,因为默认情况下已经进行了刷新-但是如果没有打印堆栈跟踪,则I/O配置会出现一些奇怪的情况)。
X.....

...X..

......

.X....