В общем изначально решил не правильно прочитав условие, но в целом остался доволен, что полностью сам и через тернарный оператор смог это сделать.
Выглядело это так:
for(String x : list){
if (x.length() < min)
min = x.length();
}
for(String x : list){
if (x.length() > max)
max = x.length();
}
int first = 0;
for (String x : list){
first = (min < max) ? min : max;
}
for (String x : list){
if (x.length() == first) {
System.out.println(x);
}
}
Вобщем сначала обрадовался какая легкая задача и что еще смог сам упростить ее на сколько мне на данный момент хватает знаний. Затем начал разбираться в условии. В целом понимал, что надо через break решить и потом наткнулся на этот кусок в комментариях в итоге задачу дорешал правильно, но теперь остался вопрос - как упрощать такие условия через тернарный оператор, когда в if () два действия system.out и break; и в esle аналогично ведь в тернарном вроде как формула: if () ? действие1 : действие2 где ? [тогда], а : это [еlse].
Так вот - как преобразовать такие блоки из 2х действий в каждом? А то хочется прогрессировать. Я вот буквально на днях из циклов for перешел на for-each и время от времени пытаюсь тернарные операторы где-то применять, но пока у меня понимание их на уровне Объявить какую-то переменную типа int min и поместить в нее условие (a < b) ? a : b; и затем вывести это в консоль sout (min); А вот уже такие блоки как упрощать не особо понимаю.
for (String x : list) {
if (x.length() == min) {
System.out.println(x);
break;
} else if (x.length() == max) {
System.out.println(x);
break;
}
}
Kuksh
15 уровень
Помогите записать концовку через тернарный оператор
Обсуждается
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Михаил
26 апреля 2021, 15:34
нашел я эту задачу. как я уже написал, тернальный используют для сокращения if else. в твоем примере else заменяется на логическое ИЛИ и исчезает. то есть это не тернальный и ты ишещь трудности там где они не нужны. Тут нет Сделать Иначе.
+1
Kuksh
26 апреля 2021, 16:05
Понял, спасибо за подробный ответ.
0
Михаил
26 апреля 2021, 14:59полезный
for (String x : list) {
if (x.length() == min || x.length() == max) {
System.out.println(x);
break;
}
}
так конечно покороче но куда брик девать не пойму.
update. тут нет else.
+1
Михаил
26 апреля 2021, 14:52
Хмм, тебе было сказано,найти только один вариант мин или макс и прервать любые действия?
Зачем останавливать цикл?
тернальный насколько я понимаю, это сокращенная запись if else причем результат гарантирован.
0
Kuksh
26 апреля 2021, 15:07
Без break; я так понимаю мы будем просто пробегать по всему списку и не выполнять условие Перед или После. Получится слова допустим: Яма, Кошка, Я - тогда мы будем пролетать Кошку и доходить до конца списка и выводить Я, что не верно.
Собственно поэтому как только мы находим по списку слово = min, то прекращаем поиск и аналогично для max.
Если я правильно правда все понял.
Но еще второй вопрос остается как это все Элегантно в разных версиях расписать для "начального" уровня, но при этом приоткрыть дверь так сказать на уровень выше.
Я конечно видел в комментариях там через Коллекции с тернарным оператором предлагали, но я думаю мне пока рано и всему свое время.
0