ross.c ross.c - 3 months ago 9
Java Question

Building student class

Each of the lines consists of three pieces of information, separated by whitespace: name (of type String), ID (of type String), and gpa (of type double).

I'm trying to write a program that reads in the integer N and a filename, and then reads N lines of data from the input file, stores the data in an ArrayList of Students. You can assume that the Student class is given in this question. I'm having some trouble with the code and getting like 13 errors. If anyone can help would be amazing !

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]

Answer

this is what i came up with and ran it locally and it works..

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();
        }

      }
}

Input file with data :

  • Wally 1234567 4.5,John 7654321 3.0,Susan 1212121 4.5
  • Sally 934567 3.75,Brown 7654321 4.0,Lilly 2212121 4.5

Output :

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..

Comments