public void processLightClick(int row, int col) {
states[row][col] = !states[row][col];
if(states[row][col] = true){
lights[row][col].setFill(ON_PAINT);
}
else if(states[row][col] = false){
lights[row][col].setFill(OFF_PAINT);
}
turns++;
System.out.println(row+":"+col);
status.setText("Turn Number " + turns);
}
这是我的代码。我每次按下一个特定的方格时都试图让它切换状态和颜色,但是当我按两次相同的方格时,油漆保持不变并且不会来回切换状态
答案 0 :(得分:1)
您在if语句中使用赋值运算符“=”而不是比较运算符“==”。试试这个。
public void processLightClick(int row, int col) {
states[row][col] = !states[row][col];
if(states[row][col] == true){
lights[row][col].setFill(ON_PAINT);
}
else if(states[row][col] == false){
lights[row][col].setFill(OFF_PAINT);
}
turns++;
System.out.println(row+":"+col);
status.setText("Turn Number " + turns);
}
答案 1 :(得分:1)
正如user2615117指出的那样,您没有使用比较运算符,而是使用赋值运算符。但是,在这里,我还会使用ternary operator来使代码更简洁:
lights[row][col].setFill((states[row][col] == true) ? ON_PAINT : OFF_PAINT);
另一个可能的改进是拥有一个Light对象数组,其中包含灯光的状态和颜色。