【发布时间】:2019-11-02 08:09:21
【问题描述】:
我正在处理我的任务并尝试从我的文本文件中读取数据。当我试图将这些信息一个一个地存储到不同的数组时,会发生这样的错误
但是通过控制台输出,它显示它实际上确实运行了第一次迭代,但是它发生了这个错误并停止它
这是我下面的代码
public static void readFile() {
cucibleID = new String[100];
name = new String[100];
matricNo = new String[100];
date = new String[100];
spvName = new String[100];
try {
Scanner sc = new Scanner(file);
while(sc.hasNext()) {
String readLine = sc.nextLine();
String[] splitted = readLine.split("\t");
for(int i=0,j=0; i< splitted.length;i++) {
cucibleID[i] = splitted[j++];
name[i] = splitted[j++];
matricNo[i] = splitted[j++];
date[i] = splitted[j++];
spvName[i] = splitted[j++];
System.out.println(cucibleID[i] +" "+ name[i]);
}
}
}catch(Exception e) {
e.printStackTrace();
}
}
这是我在控制台中的错误输出....(备注:1L5 John 来自System.out.println(cucibleID[i] +" "+ name[i]);)
1L5 John
java.lang.ArrayIndexOutOfBoundsException: 5
at ASSN1.main.readFile(main.java:99)
at ASSN1.main.main(main.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)
at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
【问题讨论】:
-
for循环的意义何在?你为什么要 X 次提取 5 个值?重新考虑你在做什么,例如i变量应该为外部while循环的每次迭代增加一次,并且不应该有内部循环,因为您知道(好吧,期望)每行有 5 个值,您只需直接获取它们,如cucibleID[i] = splitted[0];,因为cucibleID是该行中的第一个值。 -
与您的上一个问题非常相似,这个问题没有包含足够的信息来识别问题。我可以做出有根据的猜测,但它仍然只是:猜测。您最好将文件内容包含到包含
John内容的行之后。 (我的猜测是,在每次循环迭代开始时不将j重置为 0 会使您尝试引用不存在的拆分部分(第二次迭代是指第一次有读取访问权限时的第五部分数组)。) -
哦,是的,我想我有一些严重的逻辑问题。谢谢安德烈亚斯
-
谢谢 fabian 我想我明白你的意思了
-
其实索引 5 是第 6 部分...有点不专心...