问题
Okay the color I have set in the variable C is equal to the variable in coal1, but when put through an if statement it comes back that they are not equal. I've debugged it with print lines and the result is weird to me. Any help would be greatly appreciated!
Code
class MyTask extends TimerTask {
static Color coal1 = new Color(255, 255, 255);
Robot robot;
int xRock, yRock;
MyTask(Robot r, int x, int y) {
this.robot = r;
this.xRock = x;
this.yRock = y;
}
public void run() {
java.awt.Color c = this.robot.getPixelColor(this.xRock, this.yRock);
System.out.println("c before the if: "+c);
System.out.println("coal 1 before the if: "+coal1);
if (c.equals(coal1)) { //I can not get the c from the other class to compair with coal1
System.out.println("color is the same");
}
else {
System.out.println("c after the if: "+ c);
System.out.println("coal1 after the if: "+coal1);
System.out.println("color changed");
//Stop Timer.
this.cancel();
}
}
}
When I run it i get
c before the if: java.awt.Color[r=225,g=225,b=225]
coal 1 before the if: java.awt.Color[r=255,g=255,b=255]
c after the if: java.awt.Color[r=225,g=225,b=225]
coal1 after the if: java.awt.Color[r=255,g=255,b=255]
color changed
回答1:
According to your output, they are not the same. c
's red, green, and blue components are 225, while coal1
's components are 255.
Color.equals(Color o)
compares the RGB values which in your case are not the same
回答2:
Here's the solution I've come up with:
int R = 255;
int G = 255;
int B = 255;
if ((c.getRed() == R) && (c.getGreen() == G) && (c.getBlue() == B)) {
System.out.println("Found color");
} else {
System.out.println("Couldnt find color");
}
回答3:
Try using the instanceof operator.
来源:https://stackoverflow.com/questions/16741098/color-is-equal-to-another-color-java