Как отслеживать 2 самых больших числа в цикле while? - PullRequest
0 голосов
/ 25 сентября 2019

Я работаю над домашним заданием, где у меня есть список времени бега для марафонцев.Мне нужно создать программу, которая будет возвращать двух самых быстрых бегунов (а также двух самых медленных бегунов)

Я создал программу, которая будет вводить список бегунов и выводить самых быстрых и медленных бегунов.Я не могу понять, как отследить второго бегуна.Я создал класс «бегун», и каждый бегун создается как объект бегуна с номером PIN и соответствующим временем.

    while (sc.hasNext()) {
        x = new Runner(sc.nextInt(), sc.nextInt(), sc.nextInt(), sc.nextDouble());
        System.out.println(x);

        if (x.Time_seconds() < fastest.Time_seconds()) {
            fastest = x;

        }
        if (x.Time_seconds() > slowest.Time_seconds()) {
            slowest = x;
        }

    }

Код выводится, как и ожидалось.Мне просто нужно знать логику, связанную с отслеживанием второго по величине числа.

***** Эта проблема отличается от решения, которое было связано, потому что мои данные не хранятся в списке.Я импортирую текстовый документ, пин, часы, минуты, секунды.Последовательность вывода часов, минут и секунд просто повторяется снова и снова в текстовом документе.

1 Ответ

0 голосов
/ 25 сентября 2019

Прежде всего, чтобы отслеживать второе по быстродействию время, вам необходимо сохранить первые два раза, а затем сравнить их со следующими двумя в предоставленной структуре данных, учитывая, что вам также необходимо сравнить с последними двумяномера.Самое главное, если вы собираетесь сравнивать следующие два раза, вам нужно будет добавить условный оператор, чтобы проверить, достигла ли программа конца списка / etc ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...