В общем первая попытка решения через цикл while() приводит к бесконечному вводу в ArrayList
public class Solution {
public static void main(String[] args) throws IOException {
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
ArrayList<String> list = new ArrayList<>();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
for(int i = 0; i < 10; i++){
list.add(i, reader.readLine()); // заполняем массив list 10-ю строками
if(list.get(i).length() < min){
min = list.get(i).length(); // находим минимальную длину строк
}
if(list.get(i).length() > max){
max = list.get(i).length(); // находим максимальную длину строк
}
}
while(true){
int j = 0;
if(list.get(j).length() == min){
System.out.println(list.get(j));
break;
}
if(list.get(j).length() == max){
System.out.println(list.get(j));
break;
}
j++;
}
}
}
Имамдин Шарабдинов
18 уровень
В чем ошибка?
Решен
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
RiccioMaster
19 июля 2019, 21:28решение
Поставьте int j = 0 до цикла while().
+2
Имамдин Шарабдинов
19 июля 2019, 21:30
что за магия? Почему так?
0
RiccioMaster
19 июля 2019, 21:32
При каждом цикле заново объявляется переменная и ей присваивается значение 0.
+1
Имамдин Шарабдинов
20 июля 2019, 20:28
Точно точно. Но почему цикл while() влиял на цикл
for(int i = 0; i < 10; i++){ list.add(i, reader.readLine());} он же обьявлен раньше и должен при любом случае после 10 циклов закончить ввод переменных в массив. Понятно что ArrayList может расширятся пока есть память но когда i<10 == false, то все нет больше list.add(). Вот что меня смущает.
0
RiccioMaster
20 июля 2019, 20:33полезный
Он не влияет. Вставьте до цикла while():
+1
Имамдин Шарабдинов
20 июля 2019, 21:08
Огромное спасибо осознал...словил дзен!))
0
RiccioMaster
20 июля 2019, 21:09
Эти строки не добавляются в список. Вы их просто вводите в консоль. Прервать ваш бесконечный цикл можно командой "exit" - после этого еще раз выведется весь список. В нем не будет новых строк.
+1