2016-10-30 13 views
-3

ユーザから3つの数字を取得して配列リストに入れ、合計、平均、最小、最大を見つけるプログラムを作成します。私は分を見つけることに問題があります。私がコードを実行するとき、Minは常にゼロです。この問題をどのように解決すればよいですか?あなたが0をするminを設定し、それがすべての値よりも低いためだArrayListのmin、max、avg、sumの検索

int num = 0; 
    int sum = 0; 
    int avg = 0; 
    int min = 0; 
    int max = 0; 
    int i = 0; 

    ArrayList<Integer> array = new ArrayList<Integer>(); 

    Scanner input = new Scanner (System.in); 

    for (i = 0; i < 3; ++i){ 

     System.out.println("Enter a number"); 
     num = input.nextInt(); 
     array.add(num); 

     sum += num; 

     if(num > max){ 
      max = num; 
     } 

     if(num < min){ 
      min = num; 
     } 

    } 

    avg = sum/i; 

    System.out.println("Sum: " + sum); 
    System.out.println("Avg: " + avg); 
    System.out.println("Max: " + max); 
    System.out.println("Min: " + min); 



//Code Result 

//Enter a number 
// 10 
//Enter a number 
// 20 
//Enter a number 
// 30 

//Sum: 60 
//Avg: 20 
//Max: 30 
//Min: 0 <-- this is always zero 

} 
+2

'int min = 0;' 'int min = Integer.MAX_VALUE;'を使用してください – Blackbelt

+2

文字通り同じ問題で同様の問題があなたの前にありました[ここ](http://stackoverflow.com/questions/) 40326803/java-assignment-find-min-of-odd-奇数の整数と負数の数)。 – Turing85

+0

(練習のポイントは完全に何かがあるかもしれません - _Stream _を考えてください)(ブラックベルトのコメントは 'max'に似ています) – greybeard

答えて

1

。 あなたは大きな数字(例えばInteger.MAX_VALUE)にそれを初期化する必要がありますそれは動作します

2

おはよう、ショーン。

ループの外側で「min」値を初期化する必要があります。「min」を「Integer.MAX_VALUE」のような大きな値に初期化する必要があります。

とにかく、私はあなたがループすることなく、いくつかの要素を見つけることができる方法を教えてくれます:

はあなたが必要としないのArrayListの最大値を取得するには。 Collections APIを使って見つけることができます。

Collections.max(arrayList); 

これは、ArrayList内のすべての最大値を返します。

最小値を取得するには、コレクションAPIに関数があります。

Collections.min(arrayList); 

でも動作します。

あなたはループで計算する必要があります。それはあなたのプログラマーでOKです。

あなたのコードは、この

int num = 0; 
int sum = 0; 
int avg = 0; 
int min = 0; 
int max = 0; 
int i = 0; 

ArrayList<Integer> array = new ArrayList<Integer>(); 

Scanner input = new Scanner (System.in); 

for (i = 0; i < 3; ++i){ 

    System.out.println("Enter a number"); 
    num = input.nextInt(); 
    array.add(num); 

    sum += num; 
} 

max = Collections.max(array); 
min = Collections.min(array); 
avg = sum/i; 

System.out.println("Sum: " + sum); 
System.out.println("Avg: " + avg); 
System.out.println("Max: " + max); 
System.out.println("Min: " + min); 

PDのようなものでなければなりません:あなたはjava.util.Collectionsをインポートする必要があります。

良い一日を!

+1

(' PD'?) 'java.util.Collectionsをインポートする、 Collections'に 'java.util.'を指定します。 – greybeard

+0

私の投稿を完了してくれてありがとう、@greybeard良い一日を –