0

ユーザー入力の数値から配列を作成しようとしています。最小値と最大値以外はすべて計算できました。以下のコードは、最小値と最大値の両方として、ユーザーが入力した最初の数値を常に考え出します。修正方法に関する提案は大歓迎です。

   Scanner in=new Scanner (System.in);
        int num[]=new int[5];
        int average=0;
        int i=0;
        int sum=0;

        for (i=0;i<num.length;i++) {
            System.out.println("enter a number");
            num[i]=in.nextInt();
            sum=sum+num[i];
            int min=num[0];
            int max=num[0];
            if (num[i]<min) {
            min=num[i];
            }
            if (num[i]<max) {
            max=num[i];
        }

        average=sum/6;
        System.out.println("Average="+ average);
        System.out.println("Min="+ min);
        System.out.println("Max="+ max);
        System.out.println("Sum="+ sum);
4

7 に答える 7

3
        int min=num[0];
        int max=num[0];

min と max を for ループの外に移動します。

    int min = Integer.MAX_VALUE,
        max = Integer.MIN_VALUE;

ブロックの最小値と最大値は逆にする必要があります。

また、平均は次のように計算する必要があります。

    average = sum / num.length;

intのために切り捨てられる平均に注意してください

于 2013-07-11T16:25:22.523 に答える
2

あなたのコードは間違っています。これは少し改善されたものです:

Scanner in=new Scanner (System.in);
double num[]=new double[5];
double average=0;
int i=0;
double sum=0;

double min = Double.MAX_VALUE;
double max = Double.MIN_VALUE;

for (i=0;i<num.length;i++) {
    System.out.println("enter a number");
    num[i]=in.nextDouble();
    sum=sum+num[i];
    if (num[i]<min) {
        min=num[i];
    } else if (num[i] > max) {
        max=num[i];
    }
}

average=sum/num.length;
System.out.println(String.format("Average=%.3d", average));
System.out.println(String.format("Min=%.3d", min));
System.out.println(String.format("Max=%.3d", max));
System.out.println(String.format("Sum=%.3d", sum));

また、あなたが望むように、intをdoubleに置き換えました:)

于 2013-07-11T16:30:14.333 に答える
0

ソートを使用できます。

List<Integer> foo = Arrays.asList(5, 6, 7);
Collections.sort(foo);
System.out.println("max=" + foo.get(foo.size()-1));
System.out.println("min=" + foo.get(0));

いくつかの Apache ライブラリを含める場合は、次のようなものを使用できます。

System.out.println(NumberUtils.max(new int[]{5,6,7}));
于 2013-07-11T17:26:15.943 に答える
0

ループの前に最小変数と最大変数を宣言する必要があります。最初のループ (i=0) にいる場合は、それを割り当てることができます。そうでなければ、あなたはそれを比較します。このようなもの :

Scanner in=new Scanner (System.in);
    int num[]=new int[5];
    int average=0;
    int i=0;
    int sum=0;
    int min;
    int max;

    for (i=0;i<num.length;i++) {
        System.out.println("enter a number");
        num[i]=in.nextInt();
        sum=sum+num[i];
        if(i==0) {
            min=num[0];
            max=num[0];
        } else {
            if (num[i]<min) {
                min=num[i];
            }
            if (num[i]<max) {
                max=num[i];
            }
        }
    }

    average=sum/6;
    System.out.println("Average="+ average);
    System.out.println("Min="+ min);
    System.out.println("Max="+ max);
    System.out.println("Sum="+ sum);
于 2013-07-11T16:29:03.543 に答える