Как написать список ссылок в файл .txt

#java #methods #linked-list

Вопрос:

Супер простая программа. Цикл запрашивает данные об ученике (имя, адрес, средний балл), которые хранятся в связанном списке. Выведите данные в обычный текстовый файл, который можно открыть в блокноте.

Я так близок, но не могу понять, как записать мои данные в txt-файл. Для начала, вот мои занятия:

 public class Student {

    private String name;
    private String address;
    private double gpa;
        
    public Student(String name, String address, double gpa) {
        this.name = name;
        this.address = address;
        this.gpa = gpa;
    }
        
    public String getName() {
        return this.name;
    }
        
    public String getAddress()  {
        return this.address;
    }
        
    public double getGpa()  {
        return this.gpa;
    }
    
    public String toString()  {
        return this.name   ", "   this.address   ", "   this.gpa;
    }

 
 public class WriteFile {
    private String path;
    private boolean append_to_file = false;
    
    public WriteFile(String file_path)  {
        path = file_path;
    }
    
    public WriteFile(String file_path, boolean append_value)    {
        path = file_path;
        append_to_file = append_value;
    }
    
    public void writeToFile(String textLine)throws IOException  {
        FileWriter write = new FileWriter(path, append_to_file);
        PrintWriter print_line = new PrintWriter(write);
        print_line.printf("%s"   "%n", textLine);
        print_line.close();
    }
}
 
 public class ReadFile {
    private String path;
    
    public ReadFile(String file_path)   {
        path = file_path;
    }
    
    public String[] OpenFile() throws IOException   {
        FileReader fr = new FileReader(path);
        BufferedReader textReader = new BufferedReader(fr);
        
        int numberOfLines = 3;
        String[] textData = new String[numberOfLines];
        
        int i;
        
        for (i=0; i < numberOfLines; i  ) {
            textData[i] = textReader.readLine();
        }
        
        textReader.close();
        return textData;
    }
    
    int readLines() throws IOException  {
        FileReader file_to_read = new FileReader(path);
        BufferedReader bf = new BufferedReader(file_to_read);
        
        String aLine;
        int numberOfLines = 0;
        
        while ((aLine = bf.readLine()) != null) {
            numberOfLines  ;
        }
        bf.close();
        return numberOfLines;
    }
}
 

В основном я могу заставить его записать «Текст, который нужно записать в файл» в мой файл .txt, но я все еще не могу понять, как записать данные о студентах в этот файл.

     public class Main {

  public static void main(String[] args) throws IOException {

    LinkedList < Student > studentData = new LinkedList < > ();
    Scanner scanner = new Scanner(System.in);
    scanner.useDelimiter(System.lineSeparator());

    while (true) {
      System.out.println("Student name: ");
      String name = scanner.next();
      if (name.isEmpty()) {
        break;
      }

      System.out.println("Student address: ");
      String address = scanner.next();
      System.out.println("Student GPA: ");
      double gpa = scanner.nextDouble();

      studentData.add(new Student(name, address, gpa));

    }

    studentData.sort(Comparator.comparing(Student::getName));

    for (Student info: studentData) {
      System.out.println(info.getName()   ","   info.getAddress()   ","   info.getGpa());
    }

    String file_name = "C:\Users\hidden\OneDrive - hidden\Desktop\Portfolio_Project.txt";
    try {
      ReadFile file = new ReadFile(file_name);
      String[] aryLines = file.OpenFile();
      int i;
      for (i = 0; i < aryLines.length; i  ) {
        System.out.println(aryLines[1]);
      }
    } catch (IOException e) {
      System.out.println("Error. Please try again.");
    }

    // Write to a file

    WriteFile data = new WriteFile(file_name);
    data.writeToFile("Text to be written to file");
    System.out.println("Text File Written To Portfolio_Project.txt on Desktop");
  }

}
 

Комментарии:

1. Лично я бы построил метод WriteFile.writeStudents(List<Student> students) , кстати, ваши имена классов должны основываться на существительных, так что не WriteFile но StudentFileWriter (предполагая, что вы пишете в него только Student s). Также имена методов, регистр верблюда, начало нижнего регистра

2. Спасибо вам за понимание названий классов. Какие методы вы рассматриваете как не верблюжий случай? У меня есть мои конструкторы в стандартном начале верхнего регистра, но пропустил ли я один или два метода без верблюжьего регистра?

3. С какой частью этого у тебя проблемы? Что происходит, когда вы запускаете свой код? Вы получаете какие-либо ошибки? Если да, то каковы они? Если нет, то каков результат и чем он отличается от того, что вы хотите вместо этого?

4. Я не могу понять, как получить данные о студентах в файл .txt. Я могу распечатать его на экране, я также могу передать строку в свой файл .txt, но, похоже, я не могу определить, как получить данные студента в файл .txt.

5. Кожух верблюда в порядке. OpenFile должно быть openFile . Никаких подчеркиваний, кроме констант с большой буквы