gpt4 book ai didi

Java - 将 .txt 文件读取到 arrayList 会忽略最后一次迭代并显示错误

转载 作者:行者123 更新时间:2023-11-30 08:13:17 25 4
gpt4 key购买 nike

我有一个 .txt 文件,需要将其内容放入数组列表中。它采用以下格式,每个元素(int,String)在文档中换行。

零件数量字符串部分名称字符串描述国际价格字符串部分名称字符串描述国际价格等

每当我运行我的程序时,它都会添加第一个属性,但不会将最后三个属性添加到数组列表中。

    public static void loadPartsCleanly(){  

try {
// java.io.File file = new java.io.File("parts.txt");

Scanner in = new Scanner(new File("parts.txt"));
ArrayList<Part> partlist = new ArrayList<Part>();

String name=null;
String description = null;
double price =0.0;
int totalParts = 0;

totalParts = in.nextInt();
in.nextLine();
//totalParts ++ ;

System.out.println(totalParts);

for (int i = 0; i < totalParts; i++)
{
//ArrayList<Part> partlist = new ArrayList<Part>();
name = in.nextLine();
description = in.nextLine();
price = in.nextDouble();
in.nextLine();

int quantityInStock = 5;


partlist.add(new Part(name, description, price, quantityInStock));

System.out.println(partlist);
}

in.close();
} catch (FileNotFoundException fnfe) {
System.out.println("Unable to locate the parts.txt file for opening.");


} catch (Exception otherExc) {

System.out.println("***** An unexpected error has occurred *****");
otherExc.printStackTrace();
}


}

所以在上面的代码中,它读取文本文档中的第一个 Int 并将其分配给 for 循环。

    totalParts = in.nextInt();
in.nextLine();
//totalParts ++ ;

System.out.println(totalParts);

for (int i = 0; i < totalParts; i++)

无论 totalParts 是 8 还是 20,循环都可以正常工作,直到需要将最后一部分添加到数组列表为止。

这给出了这个错误..

An unexpected error has occurred java.util.NoSuchElementException: No line found

我一直在努力解决这个问题,但越来越多的挫败感促使我在这里发帖,所以任何指向正确方向的指示都将不胜感激。如果您需要澄清有关我的问题的任何内容,请询问。

最佳答案

nextInt()nextDouble() 方法与 nextLine() 不同。 nextLine() 读取 \n 而不是其他的。

因此,如果您将每个元素放在不同的行中,您应该始终使用 nextLine(),然后将该行解析为您想要的类型,例如:

String line = in.nextLine();
double price = Double.parseDouble(line);

关于Java - 将 .txt 文件读取到 arrayList 会忽略最后一次迭代并显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30048161/

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