为什么我的答案显示为Infinity?

时间:2014-10-30 19:39:33

标签: java double percentage

我对此很新,所以请耐心等待。

我正在创建一个程序,允许用户输入一个课程作业和考试成绩的分数,然后计算总成绩。输入的值必须介于1到10之间。课程作业为40%,考试成绩为60%。值1-10必须转换为百分比,这是我认为无穷大错误正在发生的地方。

这是我的代码(代码后面会有'if'和'else'语句,但我想我会好的。还要忽略底部的最终分类):

import javax.swing.JOptionPane;


public class Question3 {

    public static void main(String[] args) {

        String Coursework, Exam;

        Coursework = JOptionPane.showInputDialog("Please enter coursework score out of 10:");
        Exam = JOptionPane.showInputDialog("Please enter exam score out of 10");

        double CourseworkDoub, ExamDoub, CourseworkPerc, ExamPerc, FinalMark;

        CourseworkDoub = Double.parseDouble(Coursework);
        CourseworkPerc = (CourseworkDoub / 0.25);

        ExamDoub = Double.parseDouble(Exam);
        ExamPerc = (ExamDoub / (10 / 60));

        FinalMark = (CourseworkPerc + ExamPerc);

        JOptionPane.showMessageDialog(null, "Final mark: " + FinalMark + "\nFinal classification is a ", "Result", JOptionPane.INFORMATION_MESSAGE);

    }

}

CourseworkPercExamPerc似乎是问题所在。我希望能够将百分比显示为2位小数。例如,课程作业中的10分(价值40%)= 20.00%,考试中10分(满分60%)= 30.00%因此整体成绩为50.00%

希望这是有道理的。感谢任何给出的建议。感谢

1 个答案:

答案 0 :(得分:6)

这是由于这一行中的整数除法:

ExamPerc = (ExamDoub / (10 / 60));

1060是整数,因此(10 / 60)会产生整数答案 - 0

如果其中一个是双字面,例如10.0(或等效地,10d(double)10),您获得了双重结果 - 0.166666

示例修复:

ExamPerc = (ExamDoub / (10.0 / 60));