Java 为什么它会给我一个NoTouchElementException错误
该程序可以编译,但它给我一个错误,如下所示: 线程主java.util.NoSuchElementException中出现异常:未找到任何行Java 为什么它会给我一个NoTouchElementException错误,java,nosuchelementexception,Java,Nosuchelementexception,该程序可以编译,但它给我一个错误,如下所示: 线程主java.util.NoSuchElementException中出现异常:未找到任何行 指向该行=input.nextLine;行,我不明白为什么。问题是,在while循环中,您耗尽了Scannerobjects,因此其中没有行 稍后,当您在for循环中调用nextLine时,它显然会抛出一个异常,因为您已经对行进行了迭代 我的建议是使用列表和pojo: public static void getBooks()throws FileNotF
指向该行=input.nextLine;行,我不明白为什么。问题是,在while循环中,您耗尽了Scannerobjects,因此其中没有行 稍后,当您在for循环中调用nextLine时,它显然会抛出一个异常,因为您已经对行进行了迭代 我的建议是使用列表和pojo:
public static void getBooks()throws FileNotFoundException{
Scanner input = new Scanner(bookFile);
String line = input.nextLine();
bookNum = 1;
while (input.hasNextLine()) {
bookNum += 1;
line = input.nextLine();
}
bookarray = new String[3][bookNum];
for (int y = 0; y < bookNum; y++){
bookarray [0][y] = line.substring(0,10);
bookarray [1][y] = line.substring(11,15);
bookarray [2][y] = line.substring(17,18);
line = input.nextLine();
}
}
其中MyBookPojo可以包含从每行提取的3个字符串
因此,通过这种方式,您可以向列表中添加任意数量的对象。它会给您一个例外,因为在某些情况下,不存在下一行。您的扫描仪没有更多的行可读取,因为您已经在第一个while循环中读取了,请参见whileinput。hasNextLine@ZouZou我如何修复它,然后我尝试放置input.nextLine;而不是line=input.nextLine;但它仍然不起作用。@user3424068这不会改变任何东西。您可以关闭扫描仪,然后在while循环后重新打开它。在while之后,输入.close;输入=新的ScannerbookFile@邹祖:谢谢你的工作
List<MyBookPojo> bookPojos = new ArrayList<MyBookPojo>();