Проблема с вашим кодом:
внутри цикла, который вы получаете от пользователя, вы печатаете «самую длинную строку» в этот момент.
Это означает, что первая строка, которую вводит пользователь, будет «самой длинной строкой» и будет напечатана, поскольку ее длина сравнивается с 0 и, конечно, она длиннее.
Вы должны разделить ввод строк и вывод (печать самых длинных строк) в 2 отдельных цикла.
1-й цикл получает строки и, сравнивая, вычисляет длину самой длинной строки, а 2-й выполняет итерацию всей строки и печатает ее, только если его длина равна максимальной длине, которая была вычислена в 1-м цикле:
String[] list = new String[5];
int maxLength = 0;
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < list.length; i++) {
System.out.println("(" + (i + 1) + ") Enter a string: ");
list[i] = scanner.nextLine();
if (list[i].length() > maxLength){
maxLength = list[i].length();
}
}
scanner.close();
int counter = 0;
for (String s : list) {
if (s.length() == maxLength){
counter++;
System.out.println("(" + counter + ") Longest string: " + s + "\n");
}
}