从用户

时间:2018-06-11 04:13:16

标签: java class methods max min

import java.util.Scanner;

class Compare
{
    int max = 0;
    int min = 0;

    public void max(int num)
    {
        if(num > max)
        {
            max = num;
        }
    }
    public void min(int num)
    {
        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);
        }
    }
}
  

我想计算来自用户的五个输入的最大值和最小值,我设法获得最大值但未能获得最小值而是我得到0作为我的最小值,它是在类比较之前初始化的。我怎样才能以最简单的方式获得最小值

3 个答案:

答案 0 :(得分:3)

将0作为最小值的原因是因为当您调用compare.min(num);时,您的值将与预定义的本地值min进行比较,该值等于0。

当您将任何正数与0进行比较时,您将得到0作为最小值。

可行的解决方案是

class Compare
{
    int max = Integer.MIN_VALUE;
    int min = Integer.MAX_VALUE;


public void max(int num)
    {
        if(num > max)
        {
            max = num;
        }
    }
    public void min(int num)
    {
        if(num < min)
        {
            min = num;
        }
    }
}

这将保证您首先比较的内容将保存为 min 值,因此可用作整个程序执行的新最小值。

答案 1 :(得分:0)

这会给你一个想法

  

我修改了你的Compare类。我使用包装类作为实例变量数据类型。

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;
}
}
  

现在您将获得所需的输出。

答案 2 :(得分:0)

您可以使用标记来简化此操作,以跟踪第一个输入,然后将其余部分与之相比较。

class Demo{
    public static void main(String[]args){
        Compare c = new Compare();
        try(java.util.Scanner sc = new java.util.Scanner(System.in)){
            int i = 1;
            final int m = 5;
            while(m>=i){
                System.out.printf("Numer %d of %d: ", i, m);
                if(sc.hasNextInt()){
                    c.process(sc.nextInt());
                    i ++;
                    continue;
                }
                System.out.println("Kindly input numbers only!");
                sc.nextLine();/* clear input */
            }
        }
        System.out.printf("Max: %d, Min: %d%n", c.getMax(), c.getMin());
    }
}

class Compare{

    private int min;
    private int max;
    private boolean first = true;

    public int getMin(){
        return min;
    }

    public int getMax(){
        return max;
    }

    public void process(int val){
        if(first){
            this.min = this.max = val;
            first = false;
            return;
        }
        if(this.min > val){
            this.min = val;
        }
        if(this.max < val){
            this.max = val;
        }
    }
}