Друзья, посмотрите пожалуйста код.
Застопорился на выводе одинаковых строк.
Программа работает, но коряво
если ввести
55
66
77
3
1
То выведет
66
77
55
Последнюю цифру выводит через самый последний вывод. То есть берет и из массива same и из max
Как мне заставить ее загонять все данные либо только в массив если несколько одинаковых, либо в переменную max если одна
Беда прям уже 5-ти часовая...
Заранее спасибо!
package com.javarush.task.task07.task0708;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
/*
Самая длинная строка
*/
public class Solution {private static List<String> strings;
public static void main(String[] args) throws Exception {
//иницииализирую переменную массива
strings = new ArrayList<String>();
//наполняю массив strings 5-тью строками
for (int i = 0; i < 5; i++) {
String line = new BufferedReader(new InputStreamReader(System.in)).readLine();
strings.add(line);
}
//иницииализирую переменную для максимально длинной строки пустой строкой
String max = "";
//иницииализирую массив для занесения строк с одинаковой длинной
String[]same = new String[5];;
//перебираю массив strings и ищу самую длинную строку
for (int i = 0; i < strings.size(); i++) {
// если длина очередной строки равна длине предыдущей
if(strings.get(i).length() == max.length()) {
// то заношу строки одинаковой длины в массив same
same[i] = strings.get(i);
}
//иначе строка записывается как максимальной длины в max
else if (strings.get(i).length() > max.length()) {
max = strings.get(i);
}
}
//перебираю массив same для вывода при условии
for(int i=0; i<same.length;i++) {
//что он не пустой, то есть хотя бы две строки одной длинны там есть уже точно есть
if (same[i] != null)
{
System.out.println(same[i]);
}
}
//если в массив same не пришло ни одного значения, значит одинаковых строк не было
//и единственное самое большое значение лежит в max
System.out.print(max);
}
}