Как разбить входной текстовый файл, который имеет строку и удваивается? - PullRequest
0 голосов
/ 01 октября 2019

Я должен читать из .txt ввода и сортировать по массивам построчно (читай: имя, фамилия, класс1, класс 2, класс3), но у меня возникли проблемы. Я предполагаю, что мне придется создавать массивы для каждого человека, но я не могу пройти сортировку каждой записи строки. Я понимаю основы того, как использовать split, но я предполагаю, что мне придется использовать вложенные циклы for, чтобы отделить строки от двойников и иметь каждую в своем собственном массиве. Я не уверен, как это скомпилировать.

1 Ответ

0 голосов
/ 01 октября 2019

Вы можете использовать FileReader для чтения построчно. Затем вы можете разделить полученную строку на запятую и использовать Double.valueOf для получения ваших значений. Следующий пример прост, но предполагает, что файл сформирован правильно:

public class Test {

    static class Student {
        private String firstName;
        private String lastName;
        private double math;
        private double english;
        private double computerScience;

        public Student(String firstName, String lastName, double math,
                double english, double computerScience) {
            this.firstName = firstName;
            this.lastName = lastName;
            this.math = math;
            this.english = english;
            this.computerScience = computerScience;
        }

        @Override
        public String toString() {
            return "Name: " + firstName + " " + lastName + ", Math: " + math +
            ", English: " + english + ", Computer Science: " + computerScience;
        }
    }

    public static void main(String[] args) {
        BufferedReader reader;
        try {
            reader = new BufferedReader(new FileReader("/home/username/grades.txt"));
            String line = reader.readLine();
            while (line != null) {
                String[] gradeArray = line.split(",");
                Student myStudent = new Student(gradeArray[0], gradeArray[1],
                        Double.valueOf(gradeArray[2]), Double.valueOf(gradeArray[3]),
                        Double.valueOf(gradeArray[4]));

                System.out.println(myStudent.toString());
                line = reader.readLine();
            }
        }
        catch (NumberFormatException|IndexOutOfBoundsException badFile) {
            System.out.println("You have a malformed gradebook");
            badFile.printStackTrace();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }

}
...