int n = sc.nextInt();
char[][] original = new char[n][n];
char [][] result = new char[n][n];
String line;
for (int i = 0; i < n; i++) {
line = sc.nextLine();
System.out.println(line);
for (int u = 0; u < n; u++) {
original[i][u] = line.charAt(u);
}
}
for (int i = 0; i < n; i++) {
line = sc.nextLine();
for (int u = 0; u < n; u++) {
result[i][u] = line.charAt(u);
}
}
我有一个看起来像这样的文件:
2
ha
ah
lo
ol
我在第一行有一个整数N,然后有两个N * N个字符矩阵。
我正在尝试将它们读取到两个字符数组数组中,但是我收到了这个错误:
线程“main”中的异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0 at java.lang.String.charAt(String.java:695) 在transform.main(transform.java:25)
第25行是:
original[i][u] = line.charAt(u);
我只是不明白,我想我做的一切都很好。有任何想法吗?谢谢!
答案 0 :(得分:2)
我认为您的sc
是扫描程序实例?方法nextInt()
会读取您文件中的下一个数字,但不处理以下换行符。因此,您对nextLine()
的第一次调用将只返回一个空字符串(即所有字符,直到换行尚未处理)。您将看到println(...)
调用确实打印出一个空行。您可以在循环之前插入对newLine()
的调用来修复此行为。