宿題があり、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」というエラーメッセージが表示されます。任意の助けをいただければ幸いです。
拡張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
に強制し、除数に自動的に伝播します。
-while(int i=0; i < data.length; i++)
+for(int i=0; i < data.length; i++)
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);
}
いくつかの数の平均を見つける最良の方法は、クラス ......を試すことです.
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);
}
さて、配列の平均を計算するには、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
クラスも使用できます。それはあなた次第です。
この方法を試してください
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;
}