Верификатор засчитал задачу как решенную, однако при ручном тестировании в IDEA столкнулся со следующей проблемой.
Когда я ввожу с клавиатуры значение и нажимаю кнопку "Enter", к введенной строке добавляется символ '\n'.
Когда я в цикле читаю введенные с клавиатуры данные, метод readline() читает все символы до '\n'.
'\n' при этом не считывается, но остается во входном потоке, что очень неприятно, потому что при следующей итерации он считается как строка, и добавится в список, что приводит к тому, что список включает в себя "\n" как отдельный элемент.
for (int i = 0; i < 10; i++) {
String el = bf.readLine();
list.add(0, el);
}
Ввод с клавиатуры:
1
2
3
4
5
6
Вывод:
5
4
3
2
1
Я попытался избежать этого, добавив инструкцию readline() сразу же после чтения в el:
for (int i = 0; i < 10; i++) {
String el = bf.readLine();
bf.readLine();
list.add(0, el);
}
Это сработало, однако привело к тому, что необходимо нажимать лишний раз на enter, после ввода 10-го элемента, что тоже плохо.
Таким образом мой первый вопрос сводится к тому, как избавиться от "\n" при вводе с клавиатуры так, чтобы избежать приведенных выше результатов.
Второй мой вопрос связан с тем, что в попытке отловить проблему, я на каком-то этапе добавил отладочный вывод списка:
for (int i = 0; i < 10; i++) {
String el = bf.readLine();
list.add(0, el);
System.out.println(list);
}
4-я строка позволила избежать проблемы добавления "\n" в мой список. Я это связываю с поведением метода println(), однако не до конца понимаю, что именно он делает с болтающимся во входном потоке "\n".
1
[1]
2
[2, 1]
3
[3, 2, 1]
4
[4, 3, 2, 1]
5
[5, 4, 3, 2, 1]
6
[6, 5, 4, 3, 2, 1]
7
[7, 6, 5, 4, 3, 2, 1]
8
[8, 7, 6, 5, 4, 3, 2, 1]
9
[9, 8, 7, 6, 5, 4, 3, 2, 1]
10
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
10
9
8
7
6
5
4
3
2
1