2015-11-04 94 views
-1

我必须做一点计算,但有些工作不好,任何人都可以说出什么?我的java代码有什么问题?

例如,如果我有一个假和一个真,它应该是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 + " %."); 
+5

你没有显示任何涉及的类型,但我强烈怀疑他们都是'int',这意味着你正在进行整数运算...... –

+0

你确定'getSchade()'返回正确的值? –

+0

是的这些是整数 –

回答

1

的问题是在第一行:

for (Verhuur verhuur : verhuur) 

第二VERHUUR应该是迭代的变量名。所以大概是这样的:

for (Verhuur verhuur : verhuurItems) 

编辑:

像其他答案建议,你也必须从整数使浮筒或计算表达式为float,就像这样:

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

虽然其他人也是对的,但这也是一个非常致命的问题 – fvu

1

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

2

您可能需要将其转换为双:

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

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

您可以改变操作的顺序(乘以100分割之前,确保除法的结果是至少1),或与doublefloat变量的工作,这将允许之间的结果0和1