我已经获得了一个充满细节的文件,并且必须根据其各自的列提取并存储到不同的对象数组中。棘手的是,并非所有行都具有相同数量的数据。我可以读取文件,我可以分割它和一切。
20005,Arsenal,ManU,Arsenal,WestHam,Y,2,3,40000
2006,ManU,Chelsea,ManU,WestHam,N
2007,ManU,Arsenal,ManU,WestHam,Y,1,0,260000
2008,Chelsea,ManU,Chelsea,Swansea,Y,4,0,285630
2009,Chelsea,ManCity,Chelsea,Swansea,N
我可以将所有内容存储到第6列的数组中,之后,对于某些行,没有给出信息,那就是当我从eclipse中得到错误时。我该如何解决这个问题?
这是我的代码:(不发布所有内容,因为这是一项任务,人们可能正在寻找答案,我不想因为勾结而被抓住)
try{
Scanner kd = new Scanner(file);
while(kd.hasNext()){
String data = kd.nextLine();
String [] values = data.split(",");
String year = values[0];
String winningscore= values[6];
我收到此错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
at GrandFinal.<init>(GrandFinal.java:19)
at MainClass.main(MainClass.java:11)
答案 0 :(得分:1)
检查阵列的长度!
if(value.length > 6){
// messages are given
} else {
// messages are not given
}
或者,也许,根据您提供的数据:
if(value[5].equals("Y")){
// messages are given
} else {
// messages are not given
}
答案 1 :(得分:1)
您需要检查values
数组是否足够长。
if(values.length > 0){
String year = values[0];
}
if(values.length > 6){
//values.length == 6 means the last element you can access is number 5.
String year = values[6];
}
答案 2 :(得分:1)
对于下面的行:
2007,ManU,Arsenal,ManU,WestHam,Y,1,0,260000
如果1
是您的 6 元素,那么:
if(values.length > 6) {
String winningscore= values[6];
}
如果1,0,260000
是您的 6 元素,那么它应该是:
String winningScoreString = "";
if(values.length > 6 ) {
winningScoreString+= values[6];
}
if(values.length > 7 ) {
winningScoreString+= "," + values[7];
}
if(values.length > 8 ) {
winningScoreString+= "," + values[8];
}