を修正するのに最も苦労していますArrayIndexOutOfBoundsException
。
ファイルから1行ずつ読み取るメソッドがあります。行の名前とIDがメソッドに渡すいくつかの変数と一致する場合は、その行を配列に保存します。
このプログラムはクイズをシミュレートします。ユーザーは同じ名前とIDを2回以上使用することはできません。したがって、ファイルには同じ名前とIDの2行しか含まれていません。
temp
ファイルからこれらの2行を保持するために名前を付けた配列を作成しました。ファイルが空の場合、ユーザーは2回試行し、再試行すると拒否されます。したがって、別の名前とIDを入力すると、さらに2回試行する必要があります。この時点で、ファイルには前のユーザーからの2行が含まれていますが、新しいユーザーが試行すると、テストは1回しか受けられません。彼が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;
}