0

ユーザーに数値の入力を求める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);



    }
}
4

3 に答える 3

2

これが問題です:

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

それはあなたが望むことをまったくしません。

解決策を示すつもりはありませんが、考えてみてください。一度に 1 つだけ実行してください。「最小」から始めましょう。

  • 現在の最小数が 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 に答える