получение максимальных и минимальных пяти входных данных от пользователя более одного раза - PullRequest
0 голосов
/ 11 июня 2018
package com.company;

import java.util.Scanner;

class Compare
{
    Integer max;
    Integer min;

    public void max(int num)
    {
        if (max == null)
            max = num;
        else if(num > max)
            max = num;
    }

    public void min(int num)
    {
        if (min == null)
            min = num;
        else if(num < min)
            min = num;
    }
}
class Main
{
    public static void main(String args[])
    {
        Compare compare = new Compare();
        Scanner input = new Scanner(System.in);

        int sets = input.nextInt();
        for (int i = 0; i < sets ; i++)
        {
            for (int j = 0; j < 5; j++)
            {
                int num_main = input.nextInt();
                compare.max(num_main);
                compare.min(num_main);
            }
            System.out.println(compare.max);
            System.out.println(compare.min);
        }
    }
}

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

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Вы должны восстановить объект compare, прежде чем переходить к следующему циклу.Измените немного в своем коде:

 for (int i = 0; i < sets ; i++)
    {
        for (int j = 0; j < 5; j++)
        {
            int num_main = input.nextInt();
            compare.max(num_main);
            compare.min(num_main);
        }
        System.out.println(compare.max);
        System.out.println(compare.min);
        compare = new Compare();
    }

Объясните: Предположим, что sets = 2: Получив 5 пользовательских вводов, вы получите макс и мин.Прежде чем перейти ко второму циклу, вы должны восстановить свой compare объект, прежде чем получить 5 следующих пользовательских вводов, как указано выше.Вы также можете сделать:

for (int i = 0; i < sets ; i++)
{
    for (int j = 0; j < 5; j++)
    {
        int num_main = input.nextInt();
        compare.max(num_main);
        compare.min(num_main);
    }
    System.out.println(compare.max);
    System.out.println(compare.min);
    compare.max = compare.min = null;
}
0 голосов
/ 11 июня 2018

Наименьшее изменение заключается в перемещении compare внутри первого цикла, поэтому он находит новые maxmin) каждый раз, когда вводится новое число "set".

for (int i = 0; i < sets ; i++)
{
    Compare compare = new Compare();
    //...
    //as you were     
}

Когда вы делаете compare перед этим циклом, он будет удерживать значения для каждого введенного набора чисел.Вы хотите, чтобы он нашел max и min для набора введенных чисел.

...