2012-04-14 67 views
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:字符串索引超出範圍:0 是java .lang.String.charAt(String.java:695) 在transform.main(transform.java:25)

第25行是這樣的:

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

我只是不明白這一點,我認爲我做的一切都很好。有任何想法嗎?謝謝!

+0

在錯誤之前最後打印的行內容是什麼? – 2012-04-14 15:14:03

+0

這是關於Java的時候,爲什麼在標題中提到[Vala](http://en.wikipedia.org/wiki/Vala_(programming_language))? – Jesper 2012-04-14 15:46:58

回答

2

我想你的sc是一個掃描器實例?方法nextInt()會讀取文件中的下一個數字,但是而不是會處理以下換行符。因此,您第一次撥打nextLine()將返回一個空字符串(即所有字符,直到尚未處理的換行符)。你會看到你呼叫println(...)打印出一個空行。您可以在循環之前插入newLine()的電話以解決此問題。