每行包含三部分信息,各部分之间用空格隔开:名称(字符串类型),ID(字符串类型)和gpa(双精度类型)。
我正在尝试编写一个程序,该程序读取整数N和文件名,然后从输入文件读取N行数据,并将数据存储在Student的ArrayList中。您可以假定在此问题中给出了Student类。我在代码上遇到了一些麻烦,并遇到了13个错误。如果有人可以帮助,那就太好了!
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Students {
public static void main(String[] args) {
ArrayList<Student> students = new ArrayList<Student>(); //this will be a list of all the students in the file
//we will add to this list as we read in students from the file
//using an ArrayList allows us to easily add students when we don't know how many there will be
Scanner stu = new Scanner(System.in);
Student s = null;
/*Part two: get the file name and intialize the file reader*/
try{
System.out.print("Enter filename: "); //prompt the user for the file name
filename = in.readLine(); //get the filename- user types this on the keyboard
fin = new BufferedReader(new FileReader(filename)); //create the file reader
//if the filename is invalid, an error message will be printed and the program terminated
}catch(Exception e){
e.printStackTrace();
}
/*Part three: read all of the student data from the file*/
s = getStudent(fin); //call the getStudent function to get the next student from the file
while(s != null){ //keep going until all students have been read
students.add(s); //add the new student to our ArrayList of students
s = getStudent(fin); //get the next student
}
/*Part four: print out the results*/
for(Student a: students){ //loop through all the students in our list
System.out.println(a.getFirstName()); //print out name
System.out.println(a.getId()); //print out ID number
System.out.println("Gpa: " + a.getGrade()); //print out gpa
}
}
}
Test case
Enter an integer: 3
Enter a filename: students.txt
[Wally 1234567 4.5, John 7654321 3.0, Susan 1212121 4.5]
最佳答案
这是我想出的并在本地运行它的方法。
package tes;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Scanner;
class Student {
private String name;
private String ID;
private Double gpa;
public Double getGpa() {
return gpa;
}
@Override
public String toString() {
return "Student [name=" + name + ", ID=" + ID + ", gpa=" + gpa + "]";
}
public void setGpa(Double gpa) {
this.gpa = gpa;
}
public String getID() {
return ID;
}
public void setID(String ID) {
this.ID = ID;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class Students {
public static void main(String[] args) {
try{
ArrayList<Student> students = new ArrayList<Student>();
Scanner scanner = new Scanner(System.in);
System.out.print("Enter filename: "); //prompt the user for the file name
String fileName = scanner.next();
File file = new File(fileName);
if (!file.exists()) {
throw new FileNotFoundException("file not exits");
}
BufferedReader reader = new BufferedReader(new FileReader(file));
String currentline = "";
while ((currentline = reader.readLine()) != null) {
String[] linearray = currentline.split(",");
for (int i=0;i<linearray.length;i++) {
String record = linearray[i];
String[] r1 = record.split(" ");
Student student = new Student();
student.setName(r1[0]);
student.setID(r1[1]);
student.setGpa(Double.parseDouble(r1[2]));
students.add(student);
}
}
System.out.println(students);
}catch(Exception e){
e.printStackTrace();
}
}
}
输入文件和数据:
沃利1234567 4.5,约翰7654321 3.0,苏珊1212121 4.5
莎莉934567 3.75,布朗7654321 4.0,莉莉2212121 4.5
输出:
Enter filename: C:\Users\yc03ak1\Desktop\testing.txt
[Student [name=Wally, ID=1234567, gpa=4.5], Student [name=John, ID=7654321, gpa=3.0], Student [name=Susan, ID=1212121, gpa=4.5], Student [name=Sally, ID=934567, gpa=3.75], Student [name=Brown, ID=7654321, gpa=4.0], Student [name=Lilly, ID=2212121, gpa=4.5]]
HTH ..