我的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;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我有38个问题且38个是正确的时,它显示76个.
首先,你不应该在Float所有地方使用 - 你想要的float; 没有必要在这里拳击.
其次,你不使用x,并y在所有.
第三,我会说你表达方程式的方式至少令人困惑.有可能只是改变x并且y会很好,但我不会 - 我会改变你表达自己的整个方式.
第四,通过在PascalCase中编写方法名称来违反Java命名约定.你也有拼写错误.
修复所有这些,你最终得到的结论是:
public static float getPercentageCorrect(int questions, int correct) {
float proportionCorrect = ((float) correct) / ((float) questions);
return proportionCorrect * 100;
}
Run Code Online (Sandbox Code Playgroud)
我实际上概括了这一点 - 它不是特定的"正确答案",所以可以用于任何总分中得分的东西:
/**
* 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;
}
Run Code Online (Sandbox Code Playgroud)
如评论中所述,这可以写成:
float proportion = (float) n / total;
Run Code Online (Sandbox Code Playgroud)
...但是你需要知道验证它的优先规则.我明确地包含了两个强制转换,以明确我想要将每个操作数转换为除法float 之前.