На сколько я понимаю:
Во втором for/if, заносятся 5 значений с клавиатуры (длинну каждого значений по очереди) в переменною min.
В третьем for/if идет сравнение обновленной переменной min и 5 значений с клавиатуры (длинну каждого значений по очереди) и вывод на экран минимальной строки.
Мое предположение: в третьем for/if знаком == вначале идет сравнение каждого числа с переменной. И в результате вычесление остается наименьшая строка
Вопрос. Почему выводится минимальная строка? Не понимаю как действует система
Во вложении код:
Taras
35 уровень
Задача решена. Но не понятна до конца работа for/if в коде.
Архивный
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Дмитрий
16 октября 2020, 13:11
int min = Integer.MAX_VALUE; используй всегда максимальные границы
1. Первый цикл вносишь значения в лист
for (int i = 0; i < 5; i++) {
list.add(reader.readLine());
}
2. Вторым циклом пробегаешь лист и находишь самое минимальное из всех значений
int min = Integer.MAX_VALUE;
for (int i=0; i < list.size(); i++) {
int nStr = list.get(i).length(); <- можно и без этой переменной (просто для примера)
if (min > nStr) {
min = nStr; <-тут ты присваиваешь минимальное значение
}
3. В третьем цикле пробегаешь все значения и сравниваешь на минимальное
for (int i=0; i < list.size(); i++) {
int nStr = list.get(i).length();
if (min == nStr) {
System.out.println(list.get(i)); 5. Если таких строк несколько, выведи каждую с новой строки
}
}
0
hidden #2322530
16 октября 2020, 13:33
если есть данные, лучше сразу работать с ними, а не использовать промежуточные максимальные минимальные границы.
всё равно первой же итерацией, это значение затрётся. единственное исключение, это если нет гарантий что список будет непустой.
это равноценно будет.
только лишнюю итерацию не будем делать.
переменную полезно использовать, если ты будешь обращаться к длине строки более 1 раза. таким образом и код будет сдобней читать, плюс снижаются затраты ресурсов (не надо каждый раз обращаться в список, высчитывать длину строки)
+1
Дмитрий
16 октября 2020, 13:42
Согласен, можно привязаться к первому значению листа....:) а про переменную интересный подход, спасибо за инфу.
0
hidden #2322530
16 октября 2020, 10:04
использовать min = 100 неправильно, если все строки будут длиннее 100 символов, то твоя программа отработает и выдаст неверный результат.
во втором цикле идёт поиск минимального числа.
в третьем длина каждой строки сравнивается с минимальной (переменная min), если они равны (то есть строка имеет минимальную длину), тогда выводит на экран
0
Taras Java задачи • Mentor в @javaquiz_mentor
16 октября 2020, 12:00
Обьясни пожалуйста подробнее первый абзац.
Как можно по другому решить задачу, изменя что-то в коде?
0
hidden #2322530
16 октября 2020, 12:04
0