2015-11-04 95 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