我在嘗試修復ArrayIndexOutOfBoundsException
時遇到了最困難的時間。測驗程序中的數組索引超出範圍例外
我有一個逐行讀取文件的方法。如果行上的名稱和id匹配我傳遞給該方法的某些變量,則將該行保存到數組中。
該程序模擬測驗。用戶不能使用相同的名稱和id超過2次;因此,該文件只包含具有相同名稱和ID的兩行。
我創建了一個名爲temp
的數組來保存文件中的這兩行。如果文件爲空,則用戶進行兩次嘗試,並且當他再次嘗試時,他被拒絕。所以如果你輸入一個不同的名字和id,你應該再試2次。此時文件有兩行來自前一個用戶,但是當新用戶嘗試時,他只能進行一次測試。當他第二次嘗試時,我得到數組越界異常。
我的問題是:數組temp
是否保存了以前的值,這就是爲什麼我得到異常?
private String readFile(String id, String name) {
String[] temp = new String[3];
int i = 1;
int index = 0;
String[] split = null;
String idCheck = null;
String nameCheck = null;
temp = null;
try {
BufferedReader read = new BufferedReader(new FileReader("studentInfo.txt"));
String line = null;
try {
while ((line = read.readLine()) != null) {
try {
split = line.split("\t\t");
} catch (Exception ex) {
}
nameCheck = split[0];
idCheck = split[1];
if (idCheck.equals(id) && nameCheck.equals(name)) {
temp[index] = line;
}
index++;
}
read.close();
} catch (IOException ex) {
}
} catch (FileNotFoundException ex) {
}
if (temp != null) {
if (temp[1] == null) {
return temp[0];
}
if (temp[1] != null && temp[2] == null) {
return temp[1];
}
if (temp[2] != null) {
return temp[2];
}
}
return null;
}
需要顯示精確的異常和行號的堆棧跟蹤。 – jn1kk
你會在這裏得到一個IOOB異常 - 'idCheck = split [1];' - 如果行上沒有雙標籤。 – Jivings
'temp [index] = line;' - >這似乎有問題。如果你的文件有超過3行符合你上面的'if'語句,你最終會得到'ArrayOutOfBoundsException'。 – Laf