web-dev-qa-db-ja.com

配列を操作する方法。平均を見つけます。初心者Java

宿題があり、Javaとプログラミングに慣れていないので、誰かが私を助けてくれるかどうか疑問に思っています。質問は次のとおりです。

最初の方法は、整数配列の要素の平均を見つけます:

public double average(int[] 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」というエラーメッセージが表示されます。任意の助けをいただければ幸いです。

7
user1605782

拡張forを使用するとさらに便利になります。

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

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

double average = sum / data.length;

理由:右側には整数除算があり、Javaは自動的に浮動小数点除算に昇格しません。sum/data.lengthの整数商を計算してから昇格するだけです。その整数をdoubleに変換します。解は

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

これは、被除数をdoubleに強制し、除数に自動的に伝播します。

14
Marko Topolnik
-while(int i=0; i < data.length; i++) 
+for(int i=0; i < data.length; i++) 
7
CyberDem0n

Java 8ストリーミングAPIはエレガントな代替手段を提供します:

public static void main(String[] args) {
    double avg = Arrays.stream(new int[]{1,3,2,5,8}).average().getAsDouble();

    System.out.println("avg: " + avg);
}
6
skubski

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

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);

}
0

さて、配列の平均を計算するには、whileループの代わりにforループの使用を検討できます。

したがって、あなたの質問ごとに、配列をarrNumbers(ここではあなたの質問と同じ配列要素を考えています)

int arrNumbers[] = new int[]{1, 3, 2, 5, 8};
int sum = 0;

for(int a = 0; a < arrNumbers.length; a++)
{
   sum = sum + arrNumbers[a];
}

double average = sum / arrNumbers.length;

System.out.println("Average is: " + average);

scannerクラスも使用できます。それはあなた次第です。

0
Lohith

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

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キーワードを使用し、値を返す必要があります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;    
}
0
mssb