Мой исходный код:
package JavaRush;
import java.util.ArrayList;
import java.util.Scanner;
/*
Программа вводит строки, пока пользователь не введёт пустую строку (нажав enter).
Потом программа строит новый список. Если в строке чётное число букв, строка удваивается, если нечётное - утраивается.
Программа выводит содержимое нового списка на экран.
*/
public class Solution {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
Scanner scr = new Scanner(System.in);
while (true){
String str = scr.nextLine();
if (str == null || str.isEmpty()) break;
list.add(str);
}
ArrayList<String> oddEven = new ArrayList<>();
for (int i = 0; i < list.size(); i++){
if (list.get(i).length()%2==0){
oddEven.add(list.get(i).concat(" " + list.get(i)));
}
else
oddEven.add(list.get(i).concat(" " + list.get(i)+ " " + list.get(i)));
}
for (String x : oddEven) System.out.println(x);
}
}
Вот что в окне вывода валидатора мне выдаёт:
java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1540)
at com.javarush.task.task07.task0727.Solution.main(Solution.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
Стоит заменить Scanner на BufferedReader, тогда программа прекрасно компилируется и проходит проверку. Моё же решение со Scanner'ом в IDEA также работает. Ошибка в 18 строчке, но почему?
Я не понимаю, но хочу понять причину ошибки. Хотелось бы услышать адекватное объяснение возникшей проблемы, благодарю!