0
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 字符矩阵。

我正在尝试将它们读入两个字符数组数组,但出现此错误:

线程“主”java.lang.StringIndexOutOfBoundsException 中的异常:字符串索引超出范围:transform.main(transform.java:25) 处 java.lang.String.charAt(String.java:695) 处的 0

第 25 行是这样的:

original[i][u] = line.charAt(u);

我只是不明白,我想我做的一切都很好。有任何想法吗?谢谢!

4

1 回答 1

2

我想你sc是一个扫描仪实例?该方法nextInt()确实从您的文件中读取下一个数字,但不处理以下换行符。因此,您的第一次调用nextLine()将只返回一个空字符串(即所有字符,直到尚未处理的换行符)。你会看到你println(...)调用确实打印了一个空行。您可以在循环之前插入调用newLine()以修复此行为。

于 2012-04-14T15:16:06.033 回答