mport java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i<10; i++) {
String s = reader.readLine();
list.add(s);
}
String max = list.get(0);
String min = list.get(0);
int idx = 0;
int id = 0;
for (int i = 0; i< list.size(); i++) {
if (list.get(0).length() < list.get(i).length()) {
max = list.get(i);
idx = list.indexOf(list.get(i));
}
}
for (int j = 0; j< list.size(); j++) {
if (list.get(0).length() > list.get(j).length()) {
min = list.get(j);
id = list.indexOf(list.get(j));
}
}
if (idx < id) {
System.out.println(max);
} else {
System.out.println(min);
}
}
}
Roma_mk
20 уровень
Подскажите почему не работает?
Обсуждается
Комментарии (9)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia VolkovaJava Developer в DXCMaster
15 июня 2021, 16:31
А для чего ты сравниваешь все строки с самой первой?
0
Roma_mk
15 июня 2021, 17:53
первую беру за основу. Если ее длина больше/меньше длины другой, то....
Работает только условие с максимальной строкой, с минимальной не хочет... голову ломаю почему
0
Ksenia VolkovaJava Developer в DXCMaster
15 июня 2021, 18:47
Если ее длина больше/меньше длины другой, то... что?
Допустим, у тебя строки
какую строку твой код сочтет максимальной?
И кстати, list.indexOf(list.get(i)) - это просто i
0
Roma_mk
16 июня 2021, 18:54
что-то пошло не так... с таким набором строк вообще не работает.
про второе: то что это просто i понятно, за цикл i перебирается от 0 до 9 и, в случае "true" его значение присваивается idx. В конечном счете я его использую далее в условии и выводе решения. Или я чего-то не понимаю?
0
Roma_mk
16 июня 2021, 19:03
Стоп, с Вашим набором строк выводит "а". Решение верно.
с таким набором
ааааааааааа
бббббб
а
еге
ген
щшг
дщл
жзд
дщлэ
ьот
Выводит первую (самую длинную строку).
А с заданными по условию строками не работает. Что не так?
0
Ksenia VolkovaJava Developer в DXCMaster
16 июня 2021, 19:17
ааа
ббббббб
в
ггг
ддд
еее
жжж
зз
ииии
ккк
А так?
Ты по-прежнему считаешь, что твой код умеет находить максимальную и минимальную строки?
Их нельзя найти путем сравнения всех строк с самой первой.
0
Roma_mk
17 июня 2021, 14:28
Вот правильное решение от Javarush (сорян если туплю, но по мне - одно и тоже, сравнение с длиной первой строки):
String minSizeElement = strings.get(0);
int posMinElement = 0;
String maxSizeElement = strings.get(0);
int posMaxElement = 0;
for (int i = 0; i < 10; i++) {
if (strings.get(i).length() < minSizeElement.length()) {
minSizeElement = strings.get(i);
posMinElement = i;
} else if (strings.get(i).length() > maxSizeElement.length()) {
maxSizeElement = strings.get(i);
posMaxElement = i;
}
}
Я не говорю что сделал правильно (потому и задаю вопросы), но внятного предложения по изменению кода я не увидел
0
Ksenia VolkovaJava Developer в DXCMaster
17 июня 2021, 14:35
Вовсе не одно и то же.
Тут сравнение идет с minSizeElement/maxSizeElement. В начале цикла они соответсвуют первому элементу списка, но по ходу дела могут меняться.
А у тебя сравнение всегда только с первой строкой.
0
Roma_mk
17 июня 2021, 14:36
Все, догнал. Спасибо огромное!
0