9

宿題があり、Java とプログラミングが初めてで、質問に行き詰まっているので、誰かが私を助けてくれるかどうか疑問に思っていました。質問は:

最初のメソッドは、整数配列の要素の平均を見つけます。

public double average(int[] data)

つまり、整数配列 data を指定して、その要素の平均を計算し、平均値を返します。たとえば、{1, 3, 2, 5, 8} の平均は 3.8 です。

これが私がこれまでに行ったことです:

public double average(int[] data) {  
    int sum = 0;

    while(int i=0; i < data.length; i++) 

    sum = sum + data[i]; 
    double average = sum / data.length;; 

    System.out.println("Average value of array element is " " + average);
}

コンパイルすると、int i=0「.class expected」という部分でエラー メッセージが表示されます。どんな助けでも大歓迎です。

4

8 に答える 8

16

拡張された for を使用すると、さらに優れたものになります。

int sum = 0;
for (int d : data) sum += d;

おそらく大きな驚きを与えるもう 1 つのことは、得られる間違った結果です。

double average = sum / data.length;

理由: 右側には整数除算があり、Java はそれを自動的に浮動小数点除算に昇格させません。の整数商を計算し、sum/data.lengthその整数を に昇格しdoubleます。解決策は

double average = 1.0d * sum / data.length;

これにより、被除数が に強制的に変換さdoubleれ、除数に自動的に伝播されます。

于 2012-08-17T08:30:21.850 に答える
7
-while(int i=0; i < data.length; i++) 
+for(int i=0; i < data.length; i++) 
于 2012-08-17T08:28:45.140 に答える
0

いくつかの数値の平均を見つける最良の方法は、 クラスを試すことです......

public static void main(String[] args) {
    average(1,2,5,4);

}

public static void average(int...numbers){
    int total = 0;
    for(int x: numbers){
        total+=x;
    }
    System.out.println("Average is: "+(double)total/numbers.length);

}
于 2015-06-02T16:14:57.263 に答える
0

この方法を試してください

public void average(int[] data) {  
    int sum = 0;
    double average;

    for(int i=0; i < data.length; i++){
        sum = sum + data[i];
    }
    average = (double)sum/data.length;
    System.out.println("Average value of array element is " + average);    
}

平均値を返す必要がある場合は、 voidキーワードの代わりにdoubleキーワードを使用し、 value return averageを返す必要があります。

public double average(int[] data) {  
    int sum = 0;
    double average;

    for(int i=0; i < data.length; i++){
        sum = sum + data[i];
    }
    average = (double)sum/data.length;
    return average;    
}
于 2012-08-17T10:09:08.777 に答える
-1

配列の数値を加算して平均を求めたい場合は、この簡単な方法に従ってください。.....

public class Array {

    public static void main(String[] args) {

        int[]array = {1,3,5,7,9,6,3};
        int i=0;
        int sum=0;
        double average=0;
        for( i=0;i<array.length;i++){
            System.out.println(array[i]);
            sum=sum+array[i];
        }
        System.out.println("sum is:"+sum);
        System.out.println("average is: "+(double)sum/vargu.length);



    }

}
于 2015-06-02T13:05:30.173 に答える
-1

いくつかの問題:

while値を返していませんが、doubleのfor 戻り値の型を宣言しています

double average = sum / data.length;;

sum と data.length は両方とも int であるため、除算は int を返します - タイプを確認してください

二重セミコロン、おそらくそれを壊すことはありません、ただ奇妙に見えます.

于 2012-08-17T08:33:24.773 に答える