在连接Txt文件时遇到问题

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

我正在制作一个学生项目分配系统,该系统从txt文件读取。这将读取文件并为它们提供最佳项目。之前,我曾尝试在与学生有关的信息(姓名,电子邮件和ID)的单独一行上做出所有项目选择,并且确实起作用。但是,我尝试将它们全部放在一行中,当我看到没有选择四个项目的人时,它就跳过了。这是txt文件:

7                                   
Allan,A [email protected] 53027 1 3 4 2
Brown,B [email protected] 45696 1 2 3 4
Craig,C [email protected] 45667 2 1 4 3
Douglas,D [email protected] 52981 3 4 1 2
Edward,E [email protected] 45048 3
Findlay,F [email protected] 46904 2 1 3
Graham,G [email protected] 58733 2 4

顶部的数字“ 7”是学生人数,长号是ID,其他数字是项目编号。当调试器到达Edward'E的第一个项目“ 3”的唯一选择时,程序会认为他的第二个选择是Findlay,F并导致NumberFormatException错误。这是到目前为止的代码:

public Student(int id,Scanner scanner) {
        listOfPreferences=new ArrayList<Project>();
        projectID= new ArrayList<Integer>();
        setID(id);

        String name=scanner.next();
        this.setName(name);

        String email=scanner.next();
        this.setEmail(email);

        String ID = scanner.next();
        this.setID(id);

        //scanner.nextLine();
        String preferences=scanner.next();
        String totalPreferences[] = preferences.split(" ");

        String preferences2=scanner.next();
        String totalPreferences2[] = preferences2.split(" ");

        String preferences3=scanner.next();
        String totalPreferences3[] = preferences3.split(" ");

        String preferences4=scanner.next();
        String totalPreferences4[] = preferences4.split(" ");

        for(String project: totalPreferences)
        {
            projectID.add(Integer.valueOf(project));
        }


        for(String project: totalPreferences2)
        {
            projectID.add(Integer.valueOf(project));
        }

        for(String project: totalPreferences3)
        {
            projectID.add(Integer.valueOf(project));
        }

        for(String project: totalPreferences4)
        {
            projectID.add(Integer.valueOf(project));
        }
}

有人被困,有人可以帮忙吗?

java concatenation text-files
1个回答
0
投票

更改您的方法以创建处理每一行的代码,例如

List<MyData> myDatas = new ArrayList<>(); 

for (int i = 0; i < maxLineCount; i++) {
    String line = scanner.nextLine();
    myDatas.add(processLine(line));
}

public MyData processLine(String line) {
    // code here to create a data object from each line
    // using either String#split(..)
    // or using a separate Scanner created for each line and then disposed
    return new MyData(....); // create your data object from the processed line
}
© www.soinside.com 2019 - 2024. All rights reserved.