Как можно взять отдельные части одной строки при чтении текстового файла, который будет использоваться для установки экземпляра объекта строки? - PullRequest
0 голосов
/ 02 декабря 2018

Одна строка из моего текстового файла (Students.txt) выглядит следующим образом:

[Down Shirlee 1424 7185765304 HIS, BUS429, WRT008, PED105, ENG34, HIS534,A, KOR380,C, WRT837,C, CSE673,A, ENG475,C-, CIV561,B-, MAT318,C+, CIV796,A-, MUS586,A, HIS281,B, CHE314,A-, PHI353,B+ 2.53]

Формат каждой строки в файле Students.txt следующий:

first name, last name, unique id, phone number, major, coursesToTake, coursesTaking, coursesTaken, gpa

Теперь мне нужно взять каждый аргумент (имя, фамилию, идентификатор и т. Д.) И использовать его для создания объекта Student, который затем добавляется в массив студентов ---> Student [].

Сначала мой план был таким:

File file = new File("src/Students.txt");
Scanner in = new Scanner(file);
Student s = new Student();
i = 2000;
Student[] bag = new Student[i];

for(int p=0; p<i; p++){
    String fName; 
    String str = in.nextLine();

    for(int q=0; q<str.length(); q++){
        String fName += str[q];
        if(str[q] == " ");
            s.setFirstName(fName);

    }       

    //bag[p] = s;
}   

Очевидная проблема с этим методом заключается в том, что после получения имени я продолжаю цикл, чтобы получить остальные аргументы.?В конце концов, после каждой итерации первого цикла for:

for(int p=0; p<i; p++)

Объект

Student s

будет иметь все правильные аргументы изтекстовый файл, к которому я могу затем:

studentBag[p] = s;

Но после того, как я получаю имя, я не понимаю, как получить остальные аргументы.Какие-либо предложения?

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

Хотя существующий ответ правильный, вам действительно нужно реализовать это самостоятельно?

Используя такую ​​библиотеку, как OpenCSV - http://opencsv.sourceforge.net - вы можете объявить свой класс, аннотировать свои поля столбцомзаголовки в данных и пусть он сделает всю работу за вас.

Не только код будет более читабельным, но и более стабильным.Для начала, как вы справляетесь, если в ваших входных данных появляется запятая в кавычках?

0 голосов
/ 02 декабря 2018

Разделить запятой:

String[] args = line.split(",");
String name = args[0];
String secondNAme = args[1];
.....
Student s = new Student(name, secondNAme, ....)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...