2

Java アプリケーションに少し問題があります。

終了時のスコアを計算する必要があるため、次の方法を使用します。

public Float ScoreProcent(int questions, int correct){
    Float x = new Float(questions);
    Float y = new Float(correct);

    Float num = (float) (100 / questions * correct);
    return num;
}

ただし、38 の質問があり、38 が正しい場合、76 と表示されます。

4

8 に答える 8

9

まず、あちこちで使用するべきではありませんFloat-必要ですfloat; ここでボクシングをする必要はありません。

第二に、あなたはまったく使用していませxy

第三に、あなたが方程式を表現している方法は、少なくとも紛らわしいと思います. andに変更するだけで問題ない可能性もありますが、私は変更しません。あなたが自分自身を表現する方法全体を変更します。xy

第 4 に、PascalCase でメソッド名を記述することにより、Java 命名規則に違反しています。また、スペルミスがあります。

これらすべてを修正すると、次のようになります。

public static float getPercentageCorrect(int questions, int correct) {
    float proportionCorrect = ((float) correct) / ((float) questions);
    return proportionCorrect * 100;
}

私は実際にこれを一般化します-それは「正しい答え」に固有のものではないため、合計からのスコアであるあらゆるものに使用できます:

/**
 * Returns a proportion (n out of a total) as a percentage, in a float.
 */
public static float getPercentage(int n, int total) {
    float proportion = ((float) n) / ((float) total);
    return proportion * 100;
}

コメントで述べたように、これは次のように記述できます。

float proportion = (float) n / total;

...しかし、それを検証するための優先ルールを知る必要があります。除算のfloat 前に各オペランドを変換したいことを明確にするために、両方のキャストを明示的に含めました。

于 2012-09-28T09:38:49.757 に答える
6

これを試して。

float num = (correct * 100.0) / questions;
于 2012-09-28T09:37:39.767 に答える
3
Float num = (float) (100 / y * x);

問題は、先ほど作成したフロートを使用していなかったことです。

または、これをお勧めします:

public float getScorePercent(int questions, int correct){
    return 100f * correct / questions;
}

オブジェクトが本当に必要な場合 (めったにありません) を除いて、通常は を避けFloatて使用することをお勧めします。float

于 2012-09-28T09:36:46.753 に答える
2

これを試して:

num = (float) (100 * (float) correct / (float) questions);

また

num = (correct * 100.0) / questions;
于 2012-09-28T09:37:16.837 に答える
1

以下を使用します。

Float num = (float) ((100  * correct) / questions);
于 2012-09-28T09:39:44.880 に答える
0
Float num = (float) (100 / questions * correct); 

次の方法で実行されます。

Float num = (float) ((100 / questions) * correct); 

と の型はquestionscorrectあるためint、小数点以下の値は考慮されません。

今、100 /questions = 100 / 38 = 2そして、num = (Float)(2 * 28)= 76.

それがあなたが得ているものです。

于 2012-09-28T09:41:24.197 に答える
0

理不尽な質問はいりません。

の何分の一かを計算してcorrectquestionsます。これを数学的に表現すると、次のようになります。

  correct/questions

さて、それらは小数になる可能性があるためFloat、コードで言及した s を使用する必要があります。そう:

 (float)correct/(float)quesions  

それがあなたがcast何かを浮かべる方法です。パーセンテージ (100) で答えを得るには、100 を掛ける必要があります。

  100 * (float)correct/(float)quesions 

そして、そこに行きます:)

コード化する適切な方法については、他の回答を聞いてください。

于 2012-09-28T09:45:58.080 に答える