Всем привет. В IDEA проходит, но при проверке решения - ошибка. Задача. Дана последовательность натуральных чисел, не превышающая 30000. Найти максимальный элемент, кратный 4. Программа получает количество элементов в последовательности, а затем сами элементы в качестве входных данных. В последовательности всегда присутствует элемент, делимый на 4. Количество элементов не превышает 1000. Программа должна вывести одно число: максимальный элемент последовательности, делимый на 4. Пример ввода:
4
16
2
5
10
Пример вывода:
16
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;
public class MaximumElementDivisibleBy4 {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();
if (number > 30000) {
System.out.println("number>30000");
} else {
BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
int[] m = new int[number];
for (int i = 0; i < m.length; i++) {
m[i] = Integer.parseInt(r.readLine());
}
int max = m[0];
if (max > 1000) {
System.out.println("max>1000");
} else {
for (int i = 0; i < m.length; i++) {
if (max < m[i] && m[i] % 4 == 0) {
max = m[i];
}
}
System.out.println(max);
}
}
}
}
Вы совершенно зря пишете в программе валидацию входных данных. По условию даны данные и они будут правильные. Вам нужно убрать вот эти части:
if (number > 30000) {
if (max > 1000) {
И массив не нужен.
Основная ошибка в том, что вы неверно построили алгоритм поиска наибольшего по условию. Для поиска максимума нужно корректное начальное значение. В вашем примере вам повезло и оно было первым в последовательности (16). В общем случае надо найти первое нужное число и установить его как начальное значение переменной mMax.
Вот пример кода
int doWeSeeSpecialNumberBefore=0;
int m,mMax;
for (int i = 0; i < m.length; i++) {
m = Integer.parseInt(r.readLine());
if (m %4==0){
if (doWeSeeSpecialNumberBefore==0){mMax=m;doWeSeeSpecialNumberBefore=1;}
else
if (m>mMax){mMax=m;}
}
}
Переменная doWeSeeSpecialNumberBefore это признак того первое ли мы видим число, которое делится на 4 или не первое.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пользователь с клавиатуры вводит некую информацию, если она не соответствует заранее заданным критериям, то выводится сообщение об ошибкеПри...
В список с клавиатуры пишу стринги, на экран нужно вывести индекс первой стринги которая меньше предыдущей, пример: