'线程“ main”中的异常java.util.NoSuchElementException:找不到行'在循环读取文件时进行迭代

问题描述 投票:0回答:1

Java菜鸟在这里。因此,我正在编写一个程序,该程序从文本文件读取数据,并将数据存储到对象数组中。循环的每次迭代都读取4条数据(一个名称(字符串)和3个相应的数字(双精度))。然后,它创建一个调用构造函数的对象,并将对象存储在数组的每个元素中。有10个单独的项目,因此文本文件中有40行。

出于某种原因,我的循环正确地读取了前9行(或36行),但无法读取后4行。我在循环中写了一个打印语句,以查看发生了什么,这就是它的样子。我也尝试了for循环和while循环。这是我正在写的方法:

    public static PlanetData[] readFile() throws IOException
    {
        String name;
        double radius, flux, distance;

        final int ARRAY_SIZE = 10;
        PlanetData[] planArray = new PlanetData[ARRAY_SIZE];

        File planetFile = new File("PlanetData.txt");
        Scanner planetFileInput = new Scanner(planetFile);

        int index = 0;
        while(planetFileInput.hasNext() && index < planArray.length)
        {
            name     = planetFileInput.nextLine();
            radius   = planetFileInput.nextDouble();
            flux     = planetFileInput.nextDouble();
            distance = planetFileInput.nextDouble();
            planetFileInput.nextLine();

            System.out.println(index + ":  " + name + " " + radius + " " + flux + " " + distance);

            planArray[index] = new PlanetData(name, radius, flux, distance);

            index++;
        }



        return planArray;

我遇到以下错误:

0:  Proxima Cen b, 1.1, 0.66, 4.2
1:  Kapteyn b*,    1.6, 0.43, 13.0
2:  GJ 667 C c,    1.5, 0.88, 22.0
3:  GJ 667 C f*,   1.4, 0.56, 22.0
4:  TRAPPIST-1 e,  0.9, 0.65, 39.0
5:  TRAPPIST-1 f,  1.0, 0.38, 39.0
6:  LHS 1140 b,    1.4, 0.41, 41.0
7:  Kepler-1229 b, 1.4, 0.49, 769.0
8:  Kepler-442 b,  1.3, 0.7,  1115.0

Exception in thread "main" java.util.NoSuchElementException: No line found
    at java.base/java.util.Scanner.nextLine(Scanner.java:1651)
    at PlanetClient.readFile(PlanetClient.java:57)
    at PlanetClient.main(PlanetClient.java:13)
java arrays java.util.scanner nosuchelementexception
1个回答
0
投票

第8个条目是您PlanetData.txt中的最后一个条目吗?设置第一个条目的名称时似乎正在调用下一行,然后在条件语句的末尾再次调用。似乎这将导致您的代码跳过其他所有条目,然后尝试读取最后一行之后的行。您可以将数据发布到PlanetData.txt中吗?谢谢

© www.soinside.com 2019 - 2024. All rights reserved.