-3

{1,2} の配列で関数 arrayAvg を呼び出し、平均の 2 倍 (1.5) を返すようにこのプログラムを取得しようとしています。

これは、現時点で私のコードがどのように見えるかです。誰が私が間違っているのか考えていますか? :バツ

import java.util.*;

public class Main
{
    public static double arrayAvg(int[] array){

        int total = 0;
        int count = 1;
        double average = 0.0;

        for(int item : array){
            total=total+item;count=count+1;
        }
        double dTotal = (double)total;
        double dCount = (double)count;
        average = (dTotal/dCount);
        return average;
    }

    public static void main(String args[]){

        int[] input = {1,2};
        double result = arrayAvg(input);
        System.out.println(result);
    }
}
4

4 に答える 4

2

count を 1 ではなく 0 として初期化します。

于 2012-12-11T05:41:01.687 に答える
1

なぜ count が必要なのですか? 基本的に、配列を分割するには配列内の値の数が必要です。単に arry.length を使用すると、配列内の要素の数が返され、除算に使用されます。

int len = array.length;
double dTotal = (double) total;
double dCount = (double) len;
average = (dTotal / dCount);
return average;
于 2012-12-11T06:15:59.303 に答える
1

決定するための論理countが間違っています。1 ではなく 0 から開始する必要があります。

また、単に配列の長さを取得することもできます。

于 2012-12-11T05:41:12.437 に答える
0

実際にはロジックに問題があり、初期化されています

int count = 1;

これは間違っています。以下のように、その変数を 0 で初期化する必要があります

int count = 0;

以下は変更されたコードです

public class Main {
    public static double arrayAvg(int[] array) {
        int total = 0;
        int count = 0;
        double average = 0.0;
        for (int item : array) {
            total = total + item;
            count = count + 1;
        }
        double dTotal = (double) total;
        double dCount = (double) count;
        average = (dTotal / dCount);
        return average;
    }

    public static void main(String args[]) {
        int[] input = { 1, 2 };
        double result = arrayAvg(input);
        System.out.println(result);
    }
}

出力

1.5
于 2012-12-11T05:57:35.680 に答える