-1

次のコードではarray1、戻り値の型が であるため、メソッドは平均値を返しませんvoid

私は何voidを意味するのか知っていますが、誰かが無効な結果タイプとは何か、このメソッドが平均を返すようにする方法を説明してもらえますか:

public class JavaApplication4 {
    public static void main(String[] args) {
    int[] a = {1,2,3,4};

    double result = array1 (a);
}

public static array1 (int[] b) {
    double avarage;
    int total = 0;
    for (int x:b) {
        total += x;
    }

avarage = total / b.length;
return avarage;
}
4

3 に答える 3

2

関数宣言で「結果の型」または「戻り値の型」を設定します。関数が呼び出された後に返されるデータの型を意味します。関数は次のようになります。

public static double array1(int[] b) {
    double average;
    int total=0;
    for(int x:b){
        total +=x;
    }
    average = (double) total/b.length;

    return average;
}

これは、関数が実行された後に平均の値を返します。したがって、結果は、関数が完了した後の平均の最終値と同じものを保持します。

于 2013-01-23T20:02:00.867 に答える
1

array1returnとして宣言する必要がありますdouble。その宣言を次のように変更します。

public static double array1(int [] b ) {

void関数 -- --はvoid array1(...)値を返しません。

コードに別のエラーがあることに注意してください。

avarage = total / b.length;

上記は整数除算を使用しています。つまり、結果は整数に切り捨てられ、その後にのみ に変換されdoubleます。修正するには、行を次のように変更します。

avarage = total / (double)b.length;
于 2013-01-23T19:51:53.887 に答える
0

void の戻り値の型は、メソッドが何も返さないことを意味します。これは、配列に対して操作を実行したいが、操作に関連付けられた値がない場合に役立ちます。たとえば、配列の最初と最後の要素を交換したい場合、次のようなメソッドを記述できます (必要なエラー チェックは無視してください)。

 public void swapArrayLocs(int[] swapping){
      int temp = swapping[0];
      swapping[0] = swapping[swapping.length - 1];
      swapping[swapping.length - 1] = temp;
 }

このメソッドを呼び出すとき、あなたはそれから何の結果も期待していません.あなたのプログラムが単にビジネスを処理して実行を続けることを期待しています.

この場合、実際には array1(int[]) メソッドをプログラムの残りの部分で使用できるようにする必要があります。これを行うには、関数の戻り値の型を指定します。これにより、関数が返す情報の型をプログラムの残りの部分に伝えます。あなたの場合、メソッド宣言をに変更することでこれを行います。

public static double array1(int[] b){
    //the same method body
}

この場合、static の後に double という単語が挿入されていることに注意してください。これは、array1 を実行すると、メソッドが double 型の値を返すことを呼び出し元の関数に伝えます。これを、メソッドがいかなるタイプの情報も返さないと言った以前の内容と比較してください。

于 2013-01-23T20:07:08.840 に答える