java - 如何计算百分比

标签 java servlets percentage

下面的代码从文本文件中获取失败的索引并将其打印到网页,下面的循环执行相同的操作,但对于通过。我想计算百分比,我尝试了下面的代码,但它返回 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/

相关文章:

java - 计算移动的球与移动的线/多边形(2D)碰撞的时间

java - 如何在JSP中为mySQL自动生成唯一ID

java - 在jtable中计算%,总计

java - 如何在 Selenium 中按下2个键

java - 尝试/捕获和输入不匹配异常

java - 如何从 JSP 到 Servlet 获取 css 格式

java - 如何将键值对从jsp传递到servlet?

mysql - 获取数据范围内的百分比

python - 将百分比字符串转换为 pandas read_csv 中的 float

java - AJAX POST 到 Spring Controller 中的空参数