2014-03-13 33 views
0

說,如果紅色= 200,綠= 190,藍= 210 又在哪裏鼠標的Java如果有一個範圍

我的問題是,紅色,綠色和藍色每次都可以改變,但他們將永遠聲明接近彼此前。紅= 230,藍色= 250,綠色= 240

我想創建一個,如果有一個範圍

if (color.getRed()== 131 && color.getGreen() == 115 && color.getBlue() == 91) 
{ 
robot.mousePress(MouseEvent.BUTTON1_MASK); 
robot.mouseRelease(MouseEvent.BUTTON1_MASK); 
System.out.println("click"); 
} 

所以,如果紅,綠,藍的語句用同樣的20分中分離它的作用是在括號。

回答

1

您可以創建一些這方面的helper方法。

private boolean inColorRange(int color1, int color2) { 
    return Math.abs(color2-color1) <= 10; 
} 

這將返回true,如果顏色相距10或更小。

你可以重寫你是否是這樣的。

if (inColorRange(color.getRed(), color.getBlue()) && 
    inColorRange(color.getBlue(), color.getGreen()) { 
    // Do something here if red and blue are within 10, and blue and 
    // green are within 10 
} 
0

你可以用減法運算得到的差異,並且可以使用Math.abs()獲得差異總是正值

+0

我在哪裏可以使用ABS價值?在if語句中? – user1965081

+0

請重新閱讀答案和a​​bs的javadoc –

0
int delta = 20; 

if(withinRange(color.getRed(), color.getGreen(), delta) && 
    withinRange(color.getRed(), color.getBlue(), delta) && 
    withinRange(color.getGreen(), color.getBlue(), delta)){ 
    robot.mousePress(MouseEvent.BUTTON1_MASK); 
    robot.mouseRelease(MouseEvent.BUTTON1_MASK); 
    System.out.println("click"); 
} 


private boolean withinRange(int color1, int color2, int delta){ 
    return ((Math.abs((color1 - color2)) <= delta); 
}