2012-04-07 38 views
2

聲明不`噸的工作,我有一個getPixelColour功能:的Java2D:如果與java.awt.Color中

Color getPixelColor(int x, int y) { 
    if(mazeImage == null) System.out.println(":("); 
    int pixel = mazeImage.getRGB(x, y); 
    int red = (pixel & 0x00ff0000) >> 16; 
    int green = (pixel & 0x0000ff00) >> 8; 
    int blue = pixel & 0x000000ff; 
    return new Color(red,green,blue); 
} 

例如像素是黑色的,System.out.println(getPixelColor(x,y) + " " + Color.BLACK);java.awt.Color[r=0,g=0,b=0] java.awt.Color[r=0,g=0,b=0]

getPixelColor(x,y) == Color.BLACK回報false 。它出什麼問題了?

+0

如果您發現以下任何答案有幫助,您應該接受其中的一條。當你發佈更多問題時,除非你接受有用的答案,否則成員將不願意幫助你。 – darrengorman 2012-04-07 13:26:56

回答

4

您正在比較兩個不同的Color對象,這些對象將返回錯誤(即在不同存儲位置的兩個不同對象)。

如果要正確對它們進行比較,使用equals()

getPixelColor(x, y).equals(Color.BLACK); 
+0

這是一個愚蠢的問題。謝謝,thas幫了忙。 – DarkSun 2012-04-07 11:30:13

2

如果你

getPixelColor(x,y).equals(Color.BLACK); 

我相信你會得到你所期望的結果。

==經營者在Java中參考平等,因爲getPixelColor()返回Color一個新實例,它永遠不會==Color.BLACK因爲這樣的靜態引用,恰好是黑色的另一個實例。

2

Color是一個對象,==的對象,但實例不是內容進行比較。所以可以有幾個Color包含RGB值(0,0,0)的對象。

您想和col1.equals(col2)比較。

你可能會看看這個網站,並找到其他許多問題==equals。舉個例子:

Java String.equals versus ==

4

而不是使用getPixelColor(x, y) == Color.BLACK 嘗試 Color.BLACK.equals(getPixelColor(x, y))

你也應該對Java中的equals方法讀了,當它是適當的使用與該==操作。