Я решил сделать код не как в правильном ответе, а по своему, по колхозному.
Суть кода в том чтобы он вначале искал первое минимальное число, а потом искал ещё раз минимальное, но не равное первому, то есть второе минимальное как и сказано в условие задачи.
Компилятор ругается и пишет:
Не могу найти описание переменной "y" в классе "ru.rush.task.pro.task04.task0410.Solution". Возможно вы забыли ее импортировать (указать в import).
файл com/javarush/task/pro/task04/task0410/Solution.java, строка 35, позиция 819
Можно ли это как-нибудь поправить или придётся всё переписывать?
Lyumpen Morginalovich
24 уровень
Помогите решить задачу
Решен
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #2638719
31 мая 2021, 19:28
Переменная y объявлена внутри цикла и за ее пределами не видна. Вынеси объявление переменной за пределы цикла:
А вообще на печать выводится должна не она, а second_min судя по всему, поэтому лучше исправть System.out.println(y) на System.out.println(second_min).
+1
Lyumpen Morginalovich
1 июня 2021, 04:49
Всё равно ничего не работает
package com.javarush.task.pro.task04.task0410;
import java.util.Scanner;
/*
Второе минимальное число из введенных
*/
public class Solution {
public static void main(String[] args) {
//напишите тут ваш код
int second_min = Integer.MAX_VALUE;
int min = Integer.MAX_VALUE;
Scanner console = new Scanner(System.in);
int x = console.nextInt();
while (console.hasNextInt())
{
if (x < min)
min = x;
x = console.nextInt();
}
int y = console.nextInt();
while (console.hasNextInt())
{
if (y != min)
{
if (y < second_min)
second_min = y;
y = console.nextInt();
}
}
System.out.println(second_min);
}
}
0
hidden #2638719
1 июня 2021, 06:09решение
Все можно делать в одном цикле, второй цикл не нужен он никогда выполнен не будет. Логика примерно такая:
1. Ввести число
2. Если число < min, то min = число
3. Если число > min и число < second_min, то second_min = число
4. перейти к шагу 1
+2
Lyumpen Morginalovich
1 июня 2021, 12:02
Это решение из правильного ответа, моё решение изначально от него отличалось и я спрашивал можно ли моё решение поправить или всё переписывать. То есть всё таки надо переписывать?
0
hidden #2638719
1 июня 2021, 12:29решение
Конечно переписать )), оно не соответствует условиям задачи. В частности, по условиям программа должна принимать на вход числа пока не будет введено что-то другое, после чего она должна вывести результат и завершиться. У тебя два цикла, первый читает числа до тех пор, пока не будет введено не число, потом второй делает то же самое, а по условию после первого ввода не числа ввод данных должен быть завершен.
Ну и логика работы некорректная, что если во втором цикле будут введены два числа меньше min? По идее они должны стать min и second_min, а у тебя в коде только одно число может стать second_min, а второе будет потеряно.
+1
Lyumpen Morginalovich
1 июня 2021, 14:09
Ок, спасибо, что объяснил мне где у меня ошибки.
0