Добавление целых чисел в ArrayList до достижения конца строки - PullRequest
0 голосов
/ 14 мая 2018

У меня есть file, заполненный данными.Я хочу добавить integers после char к ArrayList и затем ArrayList вставить в map.Что не так с чтением до конца строки?

Мой код: ввод integers в ArrayList до тех пор, пока не будет найден символ новой строки.

Данные:

300 J 2 1 3
900 K 0 2
500 E 4 1
100 F 5

Мой код:

while(scan.next() != "\n") {
indexes.add(scan.nextInt());
}
myMap.put(name.get(i), indexes);

1 Ответ

0 голосов
/ 14 мая 2018

Вы используете неправильную функцию

scan.next() return:

Находит и возвращает следующий полный токен с этого сканера.Полному токену предшествует ввод, соответствующий шаблону-разделителю.Этот метод может блокировать ожидание ввода для сканирования, даже если предыдущий вызов hasNext () вернул true.

Вы используете != для сравнения с "\n" неправильно.(если вы хотите сравнить, вы должны использовать String.equals(). Если вы хотите проверить конец файла, вы должны использовать hasNext()

Вам не нужно добираться до конца строки, scanner.nextLine() прочитайте всю строку для вас

while (scan.hasNext()) {
   String line = scan.nextLine();
   String[] parts = line.split(" ");
   for (String part : parts) {
     try {
       int n = Integer.parseInt(part);
       // Add to your list
       indexes.add(n);
     } catch (Exception ex) {
       // log
     }
   }
}
...