Java 我如何显示此项的输出?

Java 我如何显示此项的输出?,java,Java,我使用的文件有名字和姓氏以及四个销售编号。我创建了一个数组。我想使用要显示的所有人员和销售数据。 这是文件的格式 Willow Mary 154 189.5 95 76 63.51 这就是我所尝试的。它一直到我的接球区 import java.io.File; import java.util.Scanner; public class Assignment10 { public static final int NUM_SALESPEOPLE = 20; public

我使用的文件有名字和姓氏以及四个销售编号。我创建了一个数组。我想使用要显示的所有人员和销售数据。 这是文件的格式

Willow Mary
154 189.5 95 76 63.51
这就是我所尝试的。它一直到我的接球区

import java.io.File;
import java.util.Scanner;


public class Assignment10 {
    public static final int NUM_SALESPEOPLE = 20;

    public static void main(String[] args) {

        SalesPerson[] list = new SalesPerson[NUM_SALESPEOPLE];

        try {
            int people = 0;
            Scanner fileInput = new Scanner(new File("A10.txt"));

            while (fileInput.hasNext()) {
                String firstName = fileInput.nextLine();
                String lastName = fileInput.nextLine();
                double firstSales = fileInput.nextDouble();
                double secondSales = fileInput.nextDouble();
                double thirdSales = fileInput.nextDouble();
                double fourthSales = fileInput.nextDouble();

                SalesPerson person = new SalesPerson(firstName, lastName,
                        firstSales, secondSales, thirdSales, fourthSales);
                list[people] = person;
                people++;

            }
        } catch (Exception ex) {
            System.out.println("Error opening file.");
        }

如果你的文件是你所说的格式,那么当你阅读每个人时,你读的行太多了。此代码:

String firstName = fileInput.nextLine();
String lastName = fileInput.nextLine();
从文件中读取两行,但名称显示在一行上。当您在文件末尾的三行之内,或者(更有可能)试图解析包含名称的行,就好像它是双值一样时,可能已经没有行了

在读取double之后,还需要使用任何尾随空格(包括换行符)。尝试
fileInput.skip(\\w”)

相反,将整行双精度字符作为一行读取,并用代码将其分开(例如,使用
split(“ "))或以其他方式进行解析。

此代码

String firstName = fileInput.nextLine();
String lastName = fileInput.nextLine();
占用了2行代码,因此下面的nextDouble()调用不会到达您希望它们到达的地方

不总是正确的,因为您捕获所有的
异常
,而不仅仅是与文件相关的异常。至少还输出您的异常生成的消息:

    } catch (Exception ex) {
        System.out.println("Something went wrong: " + ex.getMessage() );
    }

更好的方法是,分别捕获程序中生成的所有类型的异常,并提供合理的错误消息,或每种异常类型的恢复行为。

ex.printStackTrace()
添加到catch块中,以便查看异常是什么。您应该记录异常本身。尝试
ex.printStackTrace());
请删除
try catch
块,抛出
异常
,然后发布控制台中显示的整个堆栈跟踪。否则,我们只是在java.util.Scanner.throwFor(未知源代码)java.util.Scanner.nextDouble上猜测java.util.InputMismatchException(未知来源)在Assignment10.main(Assignment10.java:24)第24行是首次销售
    } catch (Exception ex) {
        System.out.println("Something went wrong: " + ex.getMessage() );
    }