-2
import java.util.Random;
import java.util.Scanner; 

public class Carpim {
    Scanner input = new Scanner(System.in); 
    Random myRandom = new Random(); 

    public void determine(){ 



    int trueNumber = 0; 
    int wrongNumber = 0; 
    int total = 0; 
    int answer = 0;

    for (int i = 0; i < 5; ++i){
    int num1 = 1 + myRandom.nextInt(11);
    int num2 = 1 + myRandom.nextInt(11);
    int correctResult = num1 * num2;

    System.out.println( num1 + "*" + num2 + " What is the answer?");
    answer = input.nextInt();

    if (answer == correctResult){ 
        ++trueNumber; 
        ++total;
    }else if (answer != trueNumber){ 
        ++total; 
        ++wrongNumber; 
    }//end if statement

    }//end for loop 

    percentage(total, wrongNumber); 

    }//end method 
    private int percentage(int total, int wrongNumber){ 
        int percentage = (total - wrongNumber)/total; 

        System.out.println(total + " " + wrongNumber + " " + percentage ); 

        return percentage; 
    }//end private method. 

}//End Class

これが私のコードです。このコードを実行すると、最後にパーセンテージを計算できません。ただし、wrongNumber と合計数は計算できます。このコードの問題点を教えてください。

4

4 に答える 4

8

整数を整数で除算すると、浮動小数点数ではなくJavaで整数が生成されます

于 2012-06-06T18:36:17.257 に答える
0

まず、整数を除算すると、整数の結果が生成されます。数値の小数部分は破棄されます。コードを次のように変更することで修正できます。

double percentage = (double)(total - wrongNumber)/total;

...次に、 を返しますdouble

また、 の戻り値を捨てていますpercentage()。そうするつもりはなかったと思うので、メソッド内のある種の変数に保存してから、出力するか返す必要があります。

于 2012-06-06T18:37:29.703 に答える
0

あなたのパーセンテージ関数では、intパーセンテージがあります。整数に 10 進値を含めることはできず、(合計 - 間違った数値) / 合計 < 0;

于 2012-06-06T18:38:10.080 に答える
0

プライベート メソッドはデータ型に注意する必要があります。

private double percentage(int total, int wrongNumber){ 
    double percentage = (double)(total - wrongNumber)/total; 

    System.out.println(total + " " + wrongNumber + " " + percentage ); 

    return percentage; 
}//end private method. 

10 進値を % 値に保持するには、浮動小数点データ型を使用する必要があります。

パーセンテージを小数点以下 2 桁にする簡単な方法が必要な場合は、次のようにします。

double percentage = 56.4332893723;
percentage = ((int)(percentage*100))/100.0;    // instant 2-decimal conversion
于 2012-06-06T18:38:52.740 に答える