Помогите проверить программу на java и исправить ошибки
Scanner in = new Scanner(System.in);
int N, first;
int count = 0;
for (int i = 0; i <= N; i++) {
System.out.println("enter number");
first = in.nextInt();
N = in.nextInt();
if (N != first)
count++;
System.out.println(count);
Нужно было написать программу, которая не выводит первое число, которое написали.
Пример
ввод:
3 4 5 6 3
вывод:
4 5 6
Ответы (1 шт):
Если рассматривать оригинальный скриншот:
в нём просматриваются следующие проблемы:
ошибка компиляции: переменная
num
объявлена и инициализируется внутри первого цикла несколько раз, а обращение к ней выполняется внутри второго цикла, поэтому в первом циклеnum
отмечена серым цветом (неиспользуемая), а во втором цикле -- красным (вне зоны определения / видимости).связанная логическая ошибка: числа в первом цикле будут считываться попарно и массив будет заполняться некорректно; для завершения цикла во входном потоке должно быть не 5 чисел, а 8, иначе цикл "зависнет" в ожидании ввода.
Просто следовало определить переменнуюnum
перед первым циклом и прочитать первое входное значение один раз.ещё одна логическая ошибка во втором цикле, итерация со второго элемента
(for int i = 1; ...)
C учётом исправлений указанных моментов решение задачи может выглядеть как показано ниже, с предположением, что сначала вводится требуемое число, а после него массив ровно из 4 элементов. Также предположим, что действительно необходимо сохранить входные значения внутри массива:
Scanner in = new Scanner(System.in);
System.out.println("Enter 5 numbers");
int first = in.nextInt();
// всё же заведём массив, чтобы разнести ввод и вывод
int[] arr = new int[4];
// ввод
for (int i = 0; i < arr.length; i++) {
arr[i] = in.nextInt();
}
// отфильтрованный вывод с использованием улучшенного цикла for (for-each)
for (int n : arr) {
if (n != first) {
System.out.println(n);
}
}
Результат:
Enter 5 numbers
3 4 5 6 3
4
5
6