0

编写一个名为 minimumLargest 的方法,要求用户输入数字,然后打印用户输入的所有数字中的最小和最大。您可以假设用户输入了一个大于 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);



    }
}
4

3 回答 3

2

这就是问题:

if(nextNumber<smallest){
    smallest+=nextNumber;
}
else if(nextNumber<largest){
    largest+=nextNumber;
}

这根本不符合你的要求。

我不会给你解决方案,但考虑一下 - 一次只做一个。让我们从“最小”开始。

  • 如果我们当前的最小数字是 5,有人输入 2,那么新的最小数字应该是多少?为什么?

  • 如果我们当前的最小数字是 5,有人输入 10,那么新的最小数字应该是多少?为什么?

解决这个问题,然后将相同的思维过程应用于“最大数字”。

于 2013-02-22T07:59:06.357 回答
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));
于 2013-02-22T08:11:59.597 回答
0

不要使用“else if”,因为在第一个循环中,数字将通过两个测试 - 即它将是最小和最大的,也不要使用“+=”,只需“=”并更改“最大”。所以像:

if(nextNumber<smallest)
    smallest=nextNumber;

if(nextNumber>largest)
    largest=nextNumber;
于 2013-02-22T08:02:52.200 回答