打印最小和最大的数字。输出不是我想要的

时间:2013-02-22 07:56:50

标签: java

编写一个名为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);



    }
}

3 个答案:

答案 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));