0

この質問の課題がありました

double の配列を受け取り、配列内の最大値を返す関数 maxArray を作成します。この機能を使用して

double maxArray(double dar[], int size);

私は彼が望むことをしましたが、メインメソッド内の呼び出し文に問題がありました!!

ここに私のコードがあります:

public class Q3 {

    public static void main(String[] args) {
        double dar[] = { 22.5 , 10.23 , 15.04 , 20.77 };
        double max = maxArray(dar,4);
        System.out.println("the largest number is : " + max);
    }

    double maxArray(double dar[], int size) {
        double maxV = 0;
        for (int i = 0; i < dar.length; i++) {
            if (dar[i] > maxV ) {         
                maxV = dar[i];          
            }
        }
        return maxV;
    } 
}
4

6 に答える 6

3

メソッドを呼び出すことができない理由は、メソッドが呼び出しできないからmain()です。main()static

次のように変更します。

static double maxArray(double dar[], int size)

size途中、不要なので外します。

配列に負の数が含まれていると、メソッドが失敗することにも注意してください。

于 2012-12-11T21:52:58.303 に答える
1

maxArrayメソッド非静的メソッドです。クラスのインスタンスなしで静的メソッドから非静的メソッドにアクセスすることはできません。クラスのインスタンスを作成し、maxArray メソッドを呼び出す必要があります。

double max = new Q3().maxArray(dar,4);

または、maxArray メソッドを常に static としてマークし、main メソッドから直接呼び出すこともできます。

于 2012-12-11T21:53:40.030 に答える
0

1) メソッドを static にする
2) Java では BigDecimal クラスを使用して 10 進演算を行うことを思い出してください。

于 2012-12-11T22:35:10.273 に答える
0

あなたの問題は、静的なメイン メソッドから非静的メソッドである maxArray を呼び出そうとしていることです。非静的メソッドはクラスのインスタンスからのみ呼び出すことができるのに対し、静的メソッドはクラス自体を介して呼び出されるため、これは問題です。

maxArray を静的メソッドにするか、メイン メソッドで Q3 オブジェクトを初期化し、そのように maxArray を呼び出します。

于 2012-12-11T21:57:54.923 に答える
0

あなたのメソッドは静的でなければならないので、あなたは言わなければなりません

static double maxArray(double dar[], int size)

メソッドを改善するためのヒントを次に示します。値「サイズ」は一度も使用しないため、破棄するかi < dar.lengthi < size.

また、maxVmaxArray メソッドで初期化する場合、配列の最初の値 ( double maxV = dar[0]) を使用することをお勧めします。これは、配列内のすべての double が負の場合、数値 0 の maxV が最大になるためです。( と言って、可能な限り最小の double 値を使用することもできますdouble maxV = Double.MIN_NORMAL)。

于 2012-12-11T21:59:24.007 に答える
0

maxArrayasを宣言してstatic、静的メソッドからアクセスできるようにしますmain()

また

クラスのインスタンスを作成し、オブジェクトから呼び出します。

于 2012-12-11T21:53:37.730 に答える