public class Solution {
public static void main(String[] args) throws Exception {
ArrayList<String> list = new ArrayList<String>(5);
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
for (int i = 0; i < 5; i++) {
list.add(reader.readLine());
}
String min = list.get(0);
for (int i = 1; i < list.size(); i++){
String min_i = list.get(i);
if (min.length() > min_i.length()){
min = list.get(i);
}
}
System.out.println(min);
}
}package com.javarush.task.task07.task0709;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
/*
Выражаемся покороче
*/
public class Solution {
public static void main(String[] args) throws Exception {
ArrayList<String> list = new ArrayList<String>(5);
int min = 1;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
for (int i = 0; i < 5; i++){
String str = reader.readLine();
list.add(str);
if (list.get(i).length() <= min ){
min = list.get(i).length();
}
}
for (int j = 0; j < 5; j++){
if (min == list.get(j).length()){
System.out.println(list.get(j));
}
}
}
}
min может быть и 0, так как есть пустая строка.В остальном, вроде бы, должно все работать. Из придирок еще то, что в строчке 19 <= min, но достаточно просто <, и что ты считываешь строку в переменную, но все равно зачем-то обращаешься к списку, чтобы получить её. Не логичнее было сразу str.length() писать? Или тогда сразу list.add(reader.readLine()) делать. Ох, точно. У тебя же min стартует с 1. Он у тебя будет выводить только пустые строки и, если последних нет, то строки с длиной 1. Как-то не в том направлении подумал. Тебе нужно min присвоить длине первого элемента. И можешь сделать вместо последнего цикла решение через стримы.