¿Cómo puedo leer un archivo de texto, procesarla y toString de escritura ()

Kanye:

Estoy teniendo una serie de problemas con esto:

1) ¿En qué clase iba a querer poner mi escáner, por lo que asigna las variables adecuadas? La tarea se me da dice que "el archivo de datos de lectura en los estudiantes" en la clase Tester

2) ¿Cómo puedo hacer un readFile()método en la clase Estudiantes?

3) ¿Cómo puedo escribir correctamente toString()en ambas clases de los estudiantes y los estudiantes?

import java.io.*;
import java.util.*;

public class Tester
{
    public static void main(String args[]) throws IOException
    {
        //new Students object
        Students theStudents = new Students();

        //reads file from Students
        theStudents.readFile();

        // create new 'Output.txt' file to save program output
        PrintWriter ot = new PrintWriter(new FileWriter("Output.txt"));

        System.out.println(theStudents.toString());
        ot.println(theStudents.toString());

        ot.close();
    }
}

import java.util.ArrayList;
import java.io.*;     
import java.util.*;    
import java.io.FileReader;

public class Students
{
    // instance variables
    private ArrayList<Student> students;

    public Students()
    {
        //create arraylist for students
        students = new ArrayList<>();
    } 

    public void readFile() throws IOException
    {
        String name;
        int age;
        double gpa;

        String line;

        //Scanner to read file
        try {
        Scanner sc = new Scanner(new File("Students.txt"));
        while (sc.hasNextLine()) {
            name = sc.nextLine();

            line = sc.nextLine();
            age = Integer.parseInt(line);

            line = sc.nextLine();
            gpa = Double.parseDouble(line);
        }
        }
        catch (FileNotFoundException e) {
              System.out.println("Error");
        }
    }

    public void add(Student s)
    {
        students.add(s);
    }

    public Students aboveAverage(double avgGPA)
    {
        Students aboveAverage = new Students(); 

        for (int i = 0; i < students.size(); ++i) {
            if (students.get(i).getGPA() > avgGPA)
                aboveAverage.add(students.get(i));
        }
        return aboveAverage;
    }

    public String toString()
    {
        String out = "";

        int count = 0;
        for (Student student : students){
            out += students.toString() + " ";
            ++count;
        }

        return out;
    }
}

public class Student
{
    private String name;
    private int age;
    private double gpa;

    public Student(String studentName, int studentAge, double studentGPA)
    {
        name = studentName;
        age = studentAge;
        gpa = studentGPA;
    }

    public String getName()
    {
        return name;
    }

    public int getAge()
    {
        return age;
    }

    public double getGPA()
    {
        return gpa;
    }

    public String toString()
    {
        return String.format("%10s", name) + 
               String.format("%5d", age) + String.format("%10.2f \n", gpa);
    }
}
user2004685:

No soy que va a dar la solución completa, pero aquí hay una manera de abordar este problema.

  • Es necesario readLine()en lugar denextLine()
  • Una vez que lea los valores, es necesario llamar a la add()función con el estudiante de objetos para añadirlo a su ArrayList.

Fragmento de código:

try (Scanner sc = new Scanner(new File("Students.txt"))) {
    while (sc.hasNextLine()) {
      String name = sc.readLine();
      int age = Integer.parseInt(sc.readLine());
      double gpa = Double.parseDouble(sc.readLine());
      /* Create A New Student Object & Add To List */
      add(new Student(name, age, gpa));
    }
} catch (FileNotFoundException e) {
    System.out.println("Error");
}

Además, es necesario para @Overridela toString()función.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=212075&siteId=1
Recomendado
Clasificación