0

好的,所以我正在编写一个程序,根据用户想要做的数量为用户提供一组方程。在它运行并且用户回答所有问题之后,将生成报告。我的报告代码很简单:

public void report(){
    percent = (totalCorrect / numberOfQuestions) * 100;
    totalTime = (endTime - startTime) / 1000;
    System.out.println("Report:");
    System.out.println("Questions Answered: " + numberOfQuestions);
    System.out.println("Total Correct: " + totalCorrect);
    System.out.println("Total Incorrect: " + totalIncorrect);
    System.out.println("Percent: " + percent + "%");
    System.out.println("Time taken: " + totalTime + " seconds");
}

然而结果是:

Report:
Questions Answered: 2
Total Correct: 1
Total Incorrect: 1
Percent: 0.0%
Time taken: 2 seconds

这是正确的,我特意回答了一个正确一个错误。我的问题是百分比始终是 0.0%,除非我把它们弄好,在这种情况下它是 100%。我不明白我做错了什么。它记录正确答案的正确数量(基于“Total Correct:”输出)和问题数量。显然我的百分比公式是正确的。任何帮助将非常感激!

4

2 回答 2

1

如果totalCorrect并且在您的程序numberOfQuestions中,您很可能已经执行了整数除法。int在 Java 的整数除法中,结果也必须是 an int,因此结果被截断。

在执行除法之前将其中一个变量转换为double,因此 Java 将首先执行浮点除法。

percent = ((double) totalCorrect / numberOfQuestions) * 100;
于 2013-07-22T19:42:50.570 回答
1

正如其他人指出的那样,您可能正在进行整数除法。

至少在计算时,您的一个或两个变量都totalCorrect必须是双精度的。numberOfQuestions

试试这个:

percent = ((double)totalCorrect / numberOfQuestions) * 100;

Maulzey 提供了另一个不错的选择,它不会从 int 转换为 double。

于 2013-07-22T19:46:38.497 回答