Всё решение скопировано с правильного ответа. Мне не стрёмно признавать, но 2 другие задачи по теме я решил, а вот на этой просто встал и не понимаю, может конечно в будущем и пойму, но сейчас со своим багажом знаний не понимаю. Хотел пропустить её на время, но хотелось бы сразу всё таки разобраться, прежде чем идти дальше. Кто нибудь может по полочкам разъяснить мне? Мы же здесь все одна дружная семья, буду признателен очень кто поможет.
public class Solution {
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
int min = console.nextInt();
int secondMin = console.nextInt();
if (secondMin < min) {
int tmp = min;
min = secondMin;
secondMin = tmp;
}
while (console.hasNextInt()) {
int x = console.nextInt();
if(min == secondMin) {
if(x < min) {
min = x;
} else {
secondMin = x;
}
} else if (x < min) {
secondMin = min;
min = x;
} else if (x > min && x < secondMin) {
secondMin = x;
}
}
System.out.println(secondMin);
}
}
MaksSaratovskiy
45 уровень
Не могу понять
Обсуждается
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Bloodhound
8 сентября 2021, 11:30
Добрый день.
У нас есть сканнер для ввода числа с клавиатуры.
По условию задачи нам необходимо минимум два числа для сравнения, поэтому создаем две целочисленных переменных "min" и "secondMin" значения которых присваиваются первыми 2 введенными с клавиатуры числами.
Потом логическим оператором if программа решает меньше ли второе введенное число чем первое.
Если это так, то создается целочисленная переменая "tmp" которой присваивается значение переменной "min" т. е. первое введеное число.
Затем переменной "min" присваивается значение "secondMin" - туда заносится второе введенное число, а переменной "secondMin" присваивется значение первого введенного числа из "tmp". Тем самым мы поменяли местами значения переменных и в "secondMin" равно второму по значению числу.
Следующим запускается цикл while который крутится до тех пор, пока с клавиатуры не будет ввудено что-либо кроме целого числа (в условиии задачи строка "exit").
Вводим целочисленную переменную "x" значение которой равно последнему введенному числу.
На каждом витке программа операторами if и else проверяет следующее:
1. Равенство значений "min" и "secondMin", если это так, то проверяется условие при котором значение "x" меньше значения "min", если это так, то переменной "min" присваивается значение "x", если нет, то значение "x" присваивается переменной 'secondMin".
2. Если значения "min" и "secondMin" не равны, и значение "x" меньше значения "min" то переменной "secondMin" присваивается значение "min", а переменной "min" значение "x".
3. А если значения "min" и "secondMin" не равны а значение "x" больше значения "min", и меньше значения "secondMin", то переменной "secondMin" присваивается значение "x" .
После окончания цикла на экран выводится значение "secondMin"
Вот как то так. Будут вопросы - пишите.
+5
MaksSaratovskiy
8 сентября 2021, 11:35
Ооооот души дружище)очень помог, я не стал решать эту задачу, двинулся дальше пока, но знал что кто нибудь да ответит,ещё раз спасибо))
0
Bloodhound
8 сентября 2021, 11:39
Да не за что. ))) Обращайся если что.
+3