2009-09-03 43 views
0

以下Java語句是否有錯誤?如果是這樣,那是什麼?Java表達式中的錯誤

P *= x/y 
+0

變量的類型是什麼? – 2009-09-03 19:55:29

+7

你錯過了一個分號。此外,該計劃的其餘部分。有些上下文會很有用。 – moonshadow 2009-09-03 19:56:18

+0

我很想找到邏輯錯誤.. – compgeek 2009-09-03 19:57:25

回答

0

它缺乏一個分號

如果有更多的錯誤,這取決於類型P,X和Y的。它們必須是數字類型

+1

適用於任何數字類型。 – 2009-09-03 19:56:50

0

除了上述缺少分號以及類型可能存在的問題外,看起來非常好。該聲明只是將x除以y,將結果乘以p,並將該值放入p中。 p = (p*(x/y));

0

如果P是一個原始的數字數據類型(float,double,int等),它可能應該是小寫。大寫變量名通常保留給Java中的常量。

而且,由於其轉換爲(P*(x/y)),如果xy其中intPfloatdouble,你可能不會得到你所期望的答案。

3

如果你要尋找的「邏輯錯誤」,如果該類型都是整數,它可能會更好做:

P = (P*x)/y; 

由於當前表達式(IIRC)等同於:

P = P*(x/y); 

如果類型是整數,後一個表達式可能不太「精確」。例如:

// evaluates to 3, as expected. 
(5*3)/5; 

然而,

// Evaluates to 0 because of truncation. 
5*(3/5); 

所以你必須要小心。一般來說,整數表達式的劃分應作爲最後一步完成。

+1

你的第一個例子(5 * 3)/ 5不會評估爲3嗎? 5 * 3 = 15 15/5 = 3 – 2009-09-03 20:10:38

+0

@Mike C 糟糕,您是對的,我的一個粗心的錯誤會糾正它。 – Peter 2009-09-03 20:32:53