下面的代码从文本文件中获取失败的索引并将其打印到网页,下面的循环执行相同的操作,但对于通过。我想计算百分比,我尝试了下面的代码,但它返回 0.0%
。
请帮忙,因为我是新手程序员。
int i = 0;
while ((i = (secondLine.indexOf(failures, i) + 1)) > 0) {
System.out.println(i);
feedbackString += "<strong style='color: red;'><li>Failed: </strong><strong>" + i + "</strong> - " + "out of " + resultString.length() + " tests.<br>";
}
int j = 0;
while ((j = (secondLine.indexOf(passed, j) + 1)) > 0) {
System.out.println(j);
feedbackString += "<strong style='color: green;'><li>Passed: </strong><strong>" + j + "</strong> - Well done.</li>";
}
totalScore = j * 100 / resultString.length();
System.out.println(totalScore);
feedbackString += "Your submission scored " + totalScore + "%.<br>";
最佳答案
您想让您的除法成为浮点除法:
totalScore = (double)j * 100 / resultString.length();
假设 totalScore
是一个 double 。
否则,j * 100/resultString.length()
将使用 int
除法,因此如果 resultString.length()
> 100,结果将为 0。
正如 Tom 提到的,while
循环的条件:
while ((j = (secondLine.indexOf(passed, j) + 1)) > 0)
确保它只会在 j <= 0 时结束。因此,难怪 (double)j * 100/resultString.length()
为 0。
如果您想计算通过次数,您需要第二个计数器:
int j = 0;
int passes = 0;
while ((j = (secondLine.indexOf(passed, j) + 1)) > 0) {
passes++;
System.out.println(j);
feedbackString += "<strong style='color: green;'><li>Passed: </strong><strong>" + j + "</strong> - Well done.</li>";
}
然后
totalScore = (double)passes * 100 / resultString.length();
关于java - 如何计算百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28044622/