所以我有这个代码......这就是它的一部分。
File File = new File("data2.txt");
Scanner readUpdate = new Scanner(File);
Player[] updatePlayers = new Player[200];
String updateSTR;
int updateTotalCounter = 0;
while (readUpdate.hasNext()) {
updateSTR = readUpdate.nextLine();
String [] updateData = updateSTR.split(",");
updatePlayers[updateTotalCounter] = new Player(updateData[0], updateData[1],updateData[2],
Integer.parseInt(updateData[3]), Integer.parseInt(updateData[4]));
updateTotalCounter++;
}
readUpdate.close();
Java不断出现并告诉我
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at Main.main(Main.java:43)
我不明白这意味着什么。任何线索?
答案 0 :(得分:2)
这意味着您尝试访问数组中大于数组中元素数量的位置,因此您会获得该常见异常。
您假设数组updateData对于您读取的每一行都有5个位置,并且对于至少一个行似乎是假的,因此抛出异常。
确保
String [] updateData = updateSTR.split(",");
所有行的大小为5(从0到4)。以这种方式解决问题,但请注意,某些行不会被处理:
File File = new File("data2.txt");
Scanner readUpdate = new Scanner(File);
Player[] updatePlayers = new Player[200];
String updateSTR;
int updateTotalCounter = 0;
while (readUpdate.hasNext()) {
updateSTR = readUpdate.nextLine();
String [] updateData = updateSTR.split(",");
if (updateData.lenght < 5) {
// invalid line format... print any message...
} else {
updatePlayers[updateTotalCounter] = new Player(updateData[0], updateData[1],updateData[2],
Integer.parseInt(updateData[3]), Integer.parseInt(updateData[4]));
updateTotalCounter++;
}
}
readUpdate.close();
答案 1 :(得分:0)
最好检查数组的长度,
String [] updateData = updateSTR.split(",");
if(updateData.length > 4){
updatePlayers[updateTotalCounter] = new Player(updateData[0], updateData[1],updateData[2],
Integer.parseInt(updateData[3]), Integer.parseInt(updateData[4]));
}