最大/最小输出未显示正确的值

时间:2020-10-11 08:39:43

标签: java

应该在输入中接收最大/最小数字的输出,这似乎是什么问题?我尝试在线查找它,源代码似乎相同。谢谢您的协助。

源代码:

package counting.largest.smallest;

import java.util.Scanner;

public class CountingLargestSmallest {

    public static void main(String[] args) {

        Scanner TheN = new Scanner(System.in);

        int counter = 0;
        int number;
        int smallest = Integer.MIN_VALUE;
        int largest = Integer.MAX_VALUE;

        while (counter < 10) {
            System.out.print("Integer=");

            number = TheN.nextInt();
            counter++;

            if (number < smallest) {
                number = smallest;
            } else if (number > largest) {
                number = largest;
            }
        }

        System.out.println("\nSmallest=" + smallest);
        System.out.println("Largest=" + largest);
    }
}

输出:

Integer=1
Integer=2
Integer=3
Integer=4
Integer=5
Integer=6
Integer=7
Integer=8
Integer=9
Integer=10

Smallest=-2147483648
Largest=2147483647

1 个答案:

答案 0 :(得分:1)

有3个错误:

1。

int smallest=Integer.MIN_VALUE; 
int largest=Integer.MAX_VALUE;
number=smallest;
number=largest;
  1. 使用else if

1:当您要查找min时,请保留其Integer.MAX_VALUE,当您要查找max时,请保留其Integer.MIN_VALUE

为什么对min初始化Integer.MAX_VALUE,为什么对max初始化Integer.MIN_VALUE

说您想从用户那里输入多个n号。因此,我们将声明mul并将其初始化为1。因为我们知道number乘以1会得到相同的number
而如果我们使用mul初始化0,则只会给我们0。 所以我们说1的乘法是identity
同样,为了找到Minimum号,我们使用Integer.MAX_VALUE的身份。
因此,先将less然后Integer.MAX_VALUE的数字保存在Samllest变量中。

 int smallest=Integer.MAX_VALUE; 

类似地,对于max,我们用initialize Integer.MIN_VALUEgreater然后Integer.MIN_VALUE的数字存储在largest变量中。 / p>

int largest=Integer.MIN_VALUE;

2:您正在为number分配smallestlargest的值,它应该像smallest=numberlargest=number
当您写入x=0时,它说x为0,这意味着x发生了变化。类似地,当您写入number=smallest时,其number = Integer.MAX_VALUE且最小值根本没有变化。
因此,您应该像smallest = number这样写,这意味着最小的数字是smallest每次条件satisfies都在变化。

3:写作时

if(condition){

}else if(conditon){

}

else if仅在第一个if语句(如果false并且第一个conditiontrueif时才执行)。 br /> 如果我们的数字递减,那么第二个if将永远不会被计算,这将导致Integer.MIN_VALUE变量中有largest
在这里,您想同时检查minmax,所以我们应该为每个语句独立使用if语句

if(condition){

}
if(condition){

}

代码:

            Scanner TheN= new Scanner(System.in);  
            int counter=0;
            int number;
            // changed
            int smallest=Integer.MAX_VALUE; 
            int largest=Integer.MIN_VALUE;
            while(counter<10){
                  System.out.print("Integer=");     
                  number=TheN.nextInt();    
                  counter++;
                  if(number<smallest){
                     // changed  
                     smallest= number;
                  }
                  if(number>largest){
                     // changed  
                     largest=number;
                 }
            }
            System.out.println("\nSmallest="+smallest);
            System.out.println("Largest="+largest);

输出:

Integer=1
Integer=2
Integer=2
Integer=4
Integer=3
Integer=6
Integer=7
Integer=8
Integer=9
Integer=10

Smallest=1
Largest=10