#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
. Никаких подчеркиваний, кроме констант с большой буквы