gpt4 book ai didi

java - 从文件读取时获取 arrayindexoutofbounds

转载 作者:行者123 更新时间:2023-12-02 06:32:20 26 4
gpt4 key购买 nike

我有一个小问题,当我尝试从文件读取时,我会遇到 arrayindexoutofboundsException 。我不知道有更好或更详细的解释方法,所以我将粘贴下面的代码和错误。这一切都在我的程序的 main 方法中。

    File fila;
String[] innlesningsarray=new String[500];

try{
Scanner innFil=new Scanner(new File("/uio/hume/student-u77/makrist/Downloads/akronymer.txt"));

while(innFil.hasNext()){
for(int i=0; i<500; i++){

// String innLest=br.nextLine();
innlesningsarray=innFil.nextLine().split("\t");
System.out.println(innlesningsarray[i]);
System.out.println(innFil.nextLine());
}
System.out.println("test");
}
System.out.println("Test2");

} catch(Exception e){
System.out.print(e);
}
}
}

在这部分之后,我有一个缩写词和其他东西的对象,但没有错误......

错误:

AA Auto Answer

AAB All-to-All Broadcast

java.lang.ArrayIndexOutOfBoundsException: 1

最佳答案

您在循环中执行两次 nextLine() 。这将读取文件中的 2 行。

如果还剩 1 行,

while(innFil.hasNext()) 可以返回 true。接下来您要做的就是在 while 循环中读取 2 行。由于只剩下 1 行,您将得到异常。

您也将其放入 for 循环中。这意味着您执行了 500*2 次 readLine() 方法,而您只检查 1 行。

尝试以下操作:

try{
Scanner innFil=new Scanner(new File("/uio/hume/student-u77/makrist/Downloads/akronymer.txt"));

while(innFil.hasNext()){
for(int i=0; i<500; i++){
String theReadLine = innFil.nextLine();
innlesningsarray=theReadLine.split("\t");
System.out.println(innlesningsarray[i]);
System.out.println(theReadLine);
}
System.out.println("test");
}
System.out.println("Test2");

} catch(Exception e){
System.out.print(e.printStackTrace);
}
}

这解决了 nextLine() 方法可能出现的错误。您应该确保 innlesningsarray 实际上有 500 个或更多条目,否则您将收到异常。确保您的 akronymer.txt 文件中包含字符串 \t 500 次或以上!

我还更改了您的catch代码。您应该编写 e.printStackTrace(),而不是 print(e)。这将打印许多有关异常的有用信息。感谢 Roland Illig 的评论!

关于java - 从文件读取时获取 arrayindexoutofbounds,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19950008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com