public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayList<String> strings = new ArrayList<String>();
while (true) {
String string = reader.readLine();
if (string == null || string.isEmpty()) {
break;
}
strings.add(string);
}
ArrayList<String> resultStrings = new ArrayList<String>();
for (int i = 0; i < strings.size(); i++) {
int a = strings.get(i).length();
if(a % 2 == 0){
strings.add(i,strings.get(i) + " " + strings.get(i));
}
if(a % 2 != 0){
strings.add(i,strings.get(i) + " " + strings.get(i) + " " + strings.get(i)) ;
}
}
for (int i = 0; i < resultStrings.size(); i++) {
System.out.println(resultStrings.get(i));
}
}
}
Семен Григорьев
41 уровень
Почему не закрывается цикл while при вводе пустой строки?
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Семен Григорьев
1 мая 2020, 20:48
Я все равно не понимаю, каким образом цикл for опять запускает while?...
0
Павел Безумный учёный Expert
1 мая 2020, 20:24
При вводе пустой строки цикл while завершается благодаря проверке string.isEmpty(). Программа входит в бесконечный цикл в том случае, если в список strings добавляется хотя бы один элемент. Тогда цикл for стартует, и на каждой его итерации происходит добавление в список нового элемента (независимо от того, какой из операторов if выполняется). Иными словами, цикл работает, пока не достигнет конца списка strings, но этот список постоянно пополняется, и из-за этого цикл никогда не достигнет последнего элемента.
0
Семен Григорьев
1 мая 2020, 20:48
Спасибо за ответ. Я все равно не понимаю...каким образом цикл for опять запускает while?...
0
Павел Безумный учёный Expert
1 мая 2020, 20:57
Цикл for не запускает while, он сам становится бесконечным. На каждой итерации цикл for проверяет длину списка, определяя, не пора ли завершиться. Но конец списка постоянно "убегает" вперёд из-за того, что каждый раз в список добавляется новый элемент. Цикл пытается "догнать" конец списка и завершиться, но не может, поскольку список всё время растёт.
0