-2

申し訳ありませんが、私はJavaが初めてです。メソッド Calculator のクラス Exam に mark1 を渡したいのですが、プログラムが非互換型と言うエラーが発生しました。私に何ができる?

このメソッドから mark1 を送信したい:

public float SendMark(){
    Exam ex = new Exam();
    for (int i=0; i<students.length; i++) {
        mark1 = students[i].getMark();
    }
    return ex.Calculator(mark1);
}

このクラスとメソッド計算機に...しかし、それは互換性のない型と言っています...このメソッドに私は配列値を合計して配列値の平均を取得したいです...それは正しい方法ですか?? ここには何を書けばいいのでしょうか…?詳細を教えてください...

public class Exam {
    public Calculator (float mark1) {
        AddList ad = new AddList();

    }
}
4

6 に答える 6

1

メソッド計算機の戻り値の型がありません。

public Calculator (float mark1)

する必要があります

public float Calculator (float mark1)
于 2012-12-30T10:57:34.957 に答える
0

コードにはいくつかの小さな問題があります。

  • 通常、メソッド名はJavaコード規約では小文字で始まる必要があります

  • forメソッドのループは何をしSendMarkますか?float変数を何度も上書きするだけですか?

  • コメントで、メソッドの出力結果が必要であると述べましExam.Calculatorたが、戻り値はありません。void次に、戻り型としてメソッドに追加する必要がありますCalculator()

  • メソッドからの戻り値を期待しない場合、Calculator()なぜメソッドに参加し、タイプがfloatであるのですか?return ex.Calculator(mark1)SendMark()

于 2012-12-30T11:12:44.720 に答える
0

Calculatorメソッドに return ステートメントがなく、そのシグネチャ (メソッド ヘッダー) で戻り値の型が宣言されていません。また、宣言した場所がわかりません。ループmark1で初期化しただけです。for一方、論理エラーも発見しましたmark1。値がループ内で繰り返し上書きされるため、配列内の最後のスコアが常に送信されます。最後の値だけが残ります。

于 2012-12-30T11:07:45.650 に答える
0

アプローチの1つは、学生の配列を電卓に渡し、電卓メソッド内で学生の合計マークを反復処理することです。

他の可能性としては、主なメソッドにマーク = マーク + 学生[i].getMark() でマークを形成し、マークと長さを電卓メソッドに渡して平均を計算します。

また、Java コーディング規則と戻り値の型を選択する方法についても確認してください。

お役に立てれば。

于 2012-12-30T13:42:25.413 に答える
0

あなたの質問から私が理解したことから、これが私の答えです。

   public float **s**endMark(){
        Exam ex = new Exam();
        for (int i=0; i<students.length; i++) {
            mark1 = students[i].getMark(); //this does not make any sense.
        }
        //Since you insisted that you wanted to only print, just call the calculator method and do not return anything. change the return type of calculator method to void.
        ex.Calculator(mark1);
        return "something";//since your method's definition says so
   }

public class Exam {
    public void **c**alculator (float mark1) {
        //Do your stuff

    }
}

また、sun java のコーディング規約を調べることもできます。

于 2012-12-30T11:42:22.137 に答える
0

戻り値の型が必要ない場合はvoid method_name(args)、C のように と入力します。 は戻り値のない型Voidのプレースホルダーです。第二に、あなたのコードは他の初心者よりも優れていますが、まだ不要な詳細がたくさんあります。つまり、自分でデバッグしていないことを意味します。問題をより適切に特定します (再現に不要なものをすべて削除します)。専門家が問題をすぐに確認する方が簡単です。あなたはそれを自分で見たり推測したりすることさえできます。そうでなければ、バグのローカライズを学ばなければ、プログラマーにはなれません。そして、SOを不必要にガベージします。

于 2012-12-30T11:11:55.257 に答える