Назначение новичка нуждается в помощи!Сканирование файлов -> Проверка данных -> Printwriter - PullRequest
3 голосов
/ 07 мая 2019

Я действительно застрял на задании Java.Я только начинающий, и мне нужно написать систему управления пожертвованиями, которая должна прочитать 2 файла (записи и инструкции донора), которые мне нужны для чтения и проверки записей донора, а затем распечатать записанные записи и распечатать их в определенном формате toString.

Нужно читать записи следующим образом: (поля могут быть в любом порядке)

phone 02111111
name Posephine Bloggs
birthday 01-06-1980
address 1 Grace Street, Lane Cove, NSW
postcode 2066
recipient dog care, the disabled
donation 100, 300

address 102 Smith St, Summer hill, NSW
postcode 2130
name Posephine Esmerelda Bloggs
birthday 13-05-1960
phone 11222009
recipient animal protection, lifecare
donation 50, 200

Я уже создал 3 сканера, 1. Сканирование файла записи 2. Сканирование по каждой строке 3. Сканированиеключевые слова и значения

Но затем я получил файл результатов, в котором каждое поле создало объект-донор вместо того, чтобы поместить все поля в один объект.

Вывод, такой как:

name: null
birthday: null
address: null
postcode: 0
phone: null

name:  Posephine Bloggs
birthday: null
address: null
postcode: 0
phone: null

name: null
birthday: 01-06-1980
address: null
postcode: 0
phone: null

name: null
birthday: null
address:  1 Grace Street, Lane Cove, NSW
postcode: 0
phone: null

name: null
birthday: null
address: null
postcode: 0
phone: null

1 Ответ

1 голос
/ 07 мая 2019

Ваша ошибка здесь:

while(scanRecord.hasNextLine()) {
    donator a = new donator();

    String line = scanRecord.nextLine();

Это означает, что у вас будет создан новый донатор для каждой прочитанной строки, тогда как вы должны создавать нового донатора всякий раз, когда вы читаете blank line.

Один из способов исправить это - вывести объявление a из цикла while и инициализировать a, только если прочитанная строка пуста.Вы также должны добавить донора в список в ветке else.

donator a = new donator();
while(scanRecord.hasNextLine()) {
    String line = scanRecord.nextLine();
    if (!line.isBlank()) {
        ...
    } else {
        donatorList.addDonator(a);
        a = new donator();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...