我的java代码有什么问题?

时间:2015-11-04 16:13:32

标签: java boolean

我必须做一些计算,但有些事情不能正常运作,任何人都可以说出什么?

例如,如果我有一个假,一个是真的,它应该是50%,但它给了我0%,这里有什么问题?

for (Verhuur verhuur : verhuur)
{
    if(verhuur.getSchade() == true)
    {
        welSchade = welSchade + 1;
    }
    if(verhuur.getSchade() == false)
    {
        geenSchade = geenSchade + 1;
    }
}
percentageSchade = (welSchade / (welSchade + geenSchade)) * 100;
System.out.println("Het percentage boten met schade is " + percentageSchade + " %." );

4 个答案:

答案 0 :(得分:2)

您可能希望将其转换为double:

((double)welSchade / (welSchade + geenSchade)) * 100

答案 1 :(得分:2)

你的问题是你将一个整数除以一个更大的整数,它返回0,因为整数没有分数。

您可以更改操作顺序(在除法前乘以100,以确保除法的结果至少为1)或使用doublefloat变量,这将允许结果介于0和1之间。

答案 2 :(得分:1)

如果welSchadegeenSchade是整数,那么它们的除法结果将是整数。因此,0.5将被评估为0,这就是为什么你得到0。

答案 3 :(得分:1)

问题出在第一行:

for (Verhuur verhuur : verhuur)

第二个verhuur应该是要迭代的变量名。所以可能是这样的:

for (Verhuur verhuur : verhuurItems)

编辑:

与其他答案一样,您还必须从整数中生成浮点数或将表达式计算为浮点数,如下所示:

((float)welSchade/((float)geenSchade+welSchade))*100