2011-06-13 61 views
0

下面是一個來自大型Java程序的一行,該程序編譯時沒有錯誤。我無法明白是怎麼< =運營商正在對賦值語句的右側使用:Java語句的右側小於等於

converged = measure.distance(centroid.getLengthSquared(), centroid, getCenter()) <= convergenceDelta; 

這是一些不起眼的Java功能?

+0

這個問題已經回答了,但是因爲你問了,收斂是一個布爾值,measure.distance返回float,而convergenceDelta的類型是float。 – Dhruv 2011-06-13 04:02:19

回答

6

不,不是。你會看到converged將是boolean類型。

這將是完全一樣的話說

boolean foo = 2 <= 3; 

所以,很可能在你的代碼measure.distance(centroid.getLengthSquared(), centroid, getCenter())返回一個數字,然後使用關係<=操作 與convergenceDelta;比較。結果將是truefalse,這是一個布爾值,將 保存在converged

+0

+1你釘了它。 – 2011-06-13 03:44:44

1

根本不是。 <=和其他關係運算符返回布爾值。如果converged是一個布爾變量,則可以將該值分配給它。

0

它被設置爲收斂到距離小於或等於變量convergenceDelta上的值的真值表。

0

< =是一個像任何其他二元運算符。如果LHS < = RHS,則其值爲真;如果不是,則爲false。

所以在這種情況下,如果距離小於收斂增量,則認爲它已經收斂。