应该在输入中接收最大/最小数字的输出,这似乎是什么问题?我尝试在线查找它,源代码似乎相同。谢谢您的协助。
源代码:
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
答案 0 :(得分:1)
有3个错误:
1。
int smallest=Integer.MIN_VALUE;
int largest=Integer.MAX_VALUE;
number=smallest;
number=largest;
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_VALUE
将greater
然后Integer.MIN_VALUE
的数字存储在largest
变量中。 / p>
int largest=Integer.MIN_VALUE;
2:您正在为number
分配smallest
和largest
的值,它应该像smallest=number
和largest=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
并且第一个condition
是true
秒if
时才执行)。 br />
如果我们的数字递减,那么第二个if
将永远不会被计算,这将导致Integer.MIN_VALUE
变量中有largest
。
在这里,您想同时检查min
和max
,所以我们应该为每个语句独立使用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