В общем первая попытка решения через цикл 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++; } } }