我在从 txt 文件中分离信息时遇到问题,将该信息添加到列表中并使用该信息创建对象
此应用程序的数据文件将以逗号分隔(每条数据将由 逗号),纯文本文件。为了标记成绩类型(实验室、项目和测试成绩)的差异,需要使用一个 将包含空数据字段。文件的第一行将包含可能的点 练习。学生 ID 将是字符串。
示例 ID,名字,姓氏,10,10,10,,100,100,,100
三个实验室(每个实验室值(value) 10 分)
两个项目(每个项目值(value) 100 分)
一次测试(值(value) 100 分)
txt文件设置如下
ID,名字,姓氏,10,10,10,,100,100,,100
1234,乔,学生,10,8,9,,100,90,,100
5678,另一个,学生,7,7,7,,75,75,,75
9012,然而,另一个,10,10,10,,65,70,,50
对象类
public class Student {
private String identifcation;
private String firstName;
private String lastName;
private List labs;
private List project;
private List test;
public Student(String identifcation, String firstName, String lastName, List<Integer> labs, List<Integer> projects, List<Integer> test) {
this.identifcation = identifcation;
this.firstName = firstName;
this.lastName = lastName;
this.labs = labs;
this.project = projects;
this.test = test;
}
}
类中的readfile方法
public List<Student> decode() {
List<Student> students = new ArrayList<Student>();
while (this.scan.hasNext()) {
List<Integer> labs = new ArrayList<Integer>();
List<Integer> projects = new ArrayList<Integer>();
List<Integer> tests = new ArrayList<Integer>();
String identifcation = this.scan.next();
String firstName = this.scan.next();
String lastName = this.scan.next();
//help int lab = the labs
//help labs.add(lab); should add the 3 labs
//help int project =
//help projects.add(project); should add the 2 projects
//help int test =
//help tests.add(test); should add the 1 test
System.out.println(identifcation);
System.out.println(firstName);
System.out.println(lastName);
System.out.print(this.scan.nextLine());
Student real = new Student(identifcation, firstName, lastName, labs, projects, tests);
students.add(real);
}
return students;
}
打印语句给我的输出为
ID,第一个
姓名、姓氏
名称,10,10,10,,100,100,,100
1234,乔,学生,7,8,9,,80,90,,100
5678,另一个,学生,7,7,7,,75,75,,75
9012,然而,另一个,10,10,10,,65,70,,50
他们应该给予
ID
名字
姓氏
等等..
最佳答案
您可以使用分隔符为“,”的字符串分词器。您只需要逐行读取文件并将其标记化即可获取对象。我会写成如下。
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
class Student {
private String identifcation;
@Override
public String toString() {
return "Student{" +
"identifcation='" + identifcation + '\'' +
", firstName='" + firstName + '\'' +
", lastName='" + lastName + '\'' +
", labs=" + labs +
", project=" + project +
", test=" + test +
'}';
}
private String firstName;
private String lastName;
private List labs;
private List project;
private List test;
public Student(String identifcation, String firstName, String lastName, List<Integer> labs, List<Integer> projects, List<Integer> test) {
this.identifcation = identifcation;
this.firstName = firstName;
this.lastName = lastName;
this.labs = labs;
this.project = projects;
this.test = test;
}
}
public class Main {
public static void main(String[] args) {
String line = "example ID,First Name,Last Name,10,10,10,,100,100,,100";
StringTokenizer tokenizer = new StringTokenizer(line,",");
while(tokenizer.hasMoreElements()) {
String id = tokenizer.nextToken();
String fname = tokenizer.nextToken();
String lName = tokenizer.nextToken();
List<Integer> labs = new ArrayList<Integer>(){{
add(Integer.parseInt(tokenizer.nextToken()));
add(Integer.parseInt(tokenizer.nextToken()));
add(Integer.parseInt(tokenizer.nextToken()));
}};
List<Integer> project = new ArrayList<Integer>(){{
add(Integer.parseInt(tokenizer.nextToken()));
add(Integer.parseInt(tokenizer.nextToken()));
}};
List<Integer> test = new ArrayList<Integer>(){{
add(Integer.parseInt(tokenizer.nextToken()));
}};
Student s1 = new Student(id,fname,lName,labs,project,test);
System.out.println(s1.toString());
}
}
}
关于java - 如何分割多行并将它们添加到数组列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51449246/