编写一个名为smallestLargest的方法,要求用户输入数字,然后打印用户输入的所有数字中最小和最大的数字。您可以假设用户输入的有效数字大于0表示要读取的数字。以下是对话示例:
您想输入多少个号码? 4
Number 1: 5
Number 2: 11
Number 3: -2
Number 4: 3
Smallest = -2
Largest = 11
这就是我所做的,但我无法获得最小和最大的输出。
import java.util.*;
public class smallestLargest{
public static void main(String[] args){
System.out.print("How many numbers do you want to enter? ");
Scanner sc=new Scanner(System.in);
int count=sc.nextInt();
int smallest=Integer.MAX_VALUE;
int largest=Integer.MIN_VALUE;
for(int i=1;i<=count;i++){
System.out.println("Number" + i + ": ");
int nextNumber=sc.nextInt();
if(nextNumber<smallest){
smallest+=nextNumber;
}
else if(nextNumber<largest){
largest+=nextNumber;
}
}
System.out.println("Smallest= "+ smallest);
System.out.println("Largest= "+ largest);
}
}
答案 0 :(得分:2)
这是问题所在:
if(nextNumber<smallest){
smallest+=nextNumber;
}
else if(nextNumber<largest){
largest+=nextNumber;
}
这根本不能做你想做的事。
我不会给你解决方案,但想一想 - 一次只做其中一个。让我们从&#34;最小的&#34;开始。
如果我们当前最小的数字是5,而某人输入2,那么新的最小数字应该是多少?为什么呢?
如果我们当前最小的数字是5,而某人输入10,那么新的最小数字应该是多少?为什么呢?
解决这个问题,然后将相同的思维过程应用到最大数字&#34;。
答案 1 :(得分:0)
不要使用“else if”,因为在第一个循环中,数字将通过两个测试 - 即它将是最小的和最大的,也不要使用“+ =”,只是“=”和改变“最大”。如下所示:
if(nextNumber<smallest)
smallest=nextNumber;
if(nextNumber>largest)
largest=nextNumber;
答案 2 :(得分:0)
有点'我很懒'解决方案:
Scanner sc = new Scanner(System.in);
List<Integer> numbers = new ArrayList<Integer>();
while (sc.hasNextInt())
{
numbers.add(sc.nextInt());
}
System.out.println("Smallest= " + Collections.min(numbers));
System.out.println("Largest= " + Collections.max(numbers));