Помощь с Задачей на Java. Нужно найти ошибку

258
15 марта 2018, 09:51
Суть задачи такова:

На входе, в первой строке задано натуральное число N – количество жильцов (N ≤ 100). В последующих N строках располагается информация о всех жильцах: каждая строка содержит два целых числа: V и S – возраст и пол человека (1 ≤ V ≤ 100, S – 0 или 1). Мужскому полу соответствует значение S=1, а женскому – S=0

На выходе, должно содержатся номер самого старшего мужчины в списке. Если таких жильцов несколько, то следует вывести наименьший номер. Если жильцов мужского пола нет, то выведите -1.

Scanner in = new Scanner(System.in);
int number = in.nextInt();
int[] citizen = new int[number]; // 25 70 100 3
int[] gender = new int[number]; // 1 1 0 1
int max = 0, Index = 0, male = 0;
for (int i = 0; i < citizen.length; i++) {
    citizen[i] = in.nextInt();
    gender[i] = in.nextInt();
}
for (int i = 0; i < citizen.length; i++) {
    if(citizen[i] > max && gender[i] == 1){
        max = citizen[i];
        Index = i+1; // Нахождение индекса самого старого мужчины
    }
    if (gender[i] == 0){ // Проверка на наличие мужчин
        male = 0;
    }
    else male++;
}
if (male == 0) System.out.println("-1");
else  System.out.println(Index);

В компиляторе всё работает как надо, но бот для тестирования не принимает код, не проходит 4 тест, номера и какие тесты проходят не известно, вожусь с задачей очень долго не понимаю что тут не так? Прошу помощи.

Ведь это связано с вариантами значений, я не могу понять какие значения он использует что программа не выдает правильный ответ.

Answer 1

А зачем так сложно? Зачем Вам эти массивы? На лету считайте

Scanner in = new Scanner(System.in);
int number = in.nextInt();
int index = -1;
int max = Integer.MIN_VALUE;
for (int i = 0; i < number; i++) {
  int age = in.nextInt();
  int gender = in.nextInt();
  if (gender == 1 && age > max) {
    index = i + 1;
    max = age;
  }
}
System.out.println(Index);

А конкретно в Вашем коде, ошибка здесь

if (gender[i] == 0){ // Проверка на наличие мужчин
    male = 0;
}
else male++;

Что будет, если последней будет идти женщина?

Если уже делать проверку (хотя я показал, что она не нужна), то она должна быть такой

if (gender[i] == 1){ // Проверка на наличие мужчин
    male++;
}
READ ALSO
Сортировка списка В алфавитном порядке

Сортировка списка В алфавитном порядке

Добрый вечерВот суть задания

208
Java: Не работает перевод строки. String в файл.txt

Java: Не работает перевод строки. String в файл.txt

При сохранении переменной string в файл txt, с помощью FileChooser пропадает перевод строкиПоискав в гугле, нашел решение в виде замены "\n" на

188
Как получить курс валют используя Retrofit

Как получить курс валют используя Retrofit

Задача такова: Создать API для конвертация, у меня будет два EditText и два SpinnerНа первом editText ведем значение, выбираем первый spinner (USD), и на втором...

195
System.exit(0) только сворачивает приложение

System.exit(0) только сворачивает приложение

У меня есть активити, класс broadcast и один сервис Я прослушиваю состояния телефона и когда принимается звонок приложение должно перестать работать...

215