プロが教える店舗&オフィスのセキュリティ対策術

以下はコマンドライン引数で任意の数の整数を受け取って、合計・平均・最大・最小を求めようとしたソースです。
しかし、実行したら最大値と最小値が正しく出ませんでした。
if文が間違っているのかもしれないと思ったのですが、はっきりと『ここが間違っている』という場所が分かりません。
どうかご指摘お願いします。

class Choco
{
public static void main (String[] args)
{
int i;
int sum = 0;
int max;
int min;

for ( i=0; i<args.length; i++)
sum += Integer.parseInt(args[i]);
double ave = sum/args.length;

max = args.length;
min = args.length;
if (args.length>max){
max = args.length;
}
if (args.length<min){
min = args.length;
}
System.out.println("合計は" + sum + "です。");
System.out.println("平均は" + ave + "です。");
System.out.println("最大値は" + max + "です。");
System.out.println("最小値は" + min + "です。");

}
}

A 回答 (1件)

添削してみました。


・args.length は、引数の数ですから最大値や最小値と比べるのは意味がありません。
・int / intは結果がint になってしまうので、doubleで計算させないとdoubleに代入する意味がありません。 
------------------------------------------------------------------
class Choco{
public static void main (String[] args) {
int i, v;
int sum = 0;
int max=Integer.MIN_VALUE;
int min=Integer.MAX_VALUE;

for ( i=0; i<args.length; i++){
v= Integer.parseInt(args[i]);
sum += v;
if(v>max)
max=v;
if(v<min)
min=v;
}

double ave = (double)sum/args.length;

System.out.println("合計は" + sum + "です。");
System.out.println("平均は" + ave + "です。");
System.out.println("最大値は" + max + "です。");
System.out.println("最小値は" + min + "です。");

}
}
    • good
    • 0
この回答へのお礼

添削ありがとうございます。
また、間違いの箇所の指摘があったのでどう間違っていたのかがよく分かりました。

お礼日時:2005/08/20 19:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!