Java getter返回原始值而不是setter更新的值

时间:2015-12-02 21:43:18

标签: java getter-setter

我正在做一个为照片制作滤镜的项目,我们使用getter和setter方法设置新的RGB值。

public class Color {

private double red;
private double green;
private double blue;

public Color() {
this.setRed(1.0);
this.setGreen(1.0);
this.setBlue(1.0);
}

public Color(double red, double green, double blue) {
this.setRed(red);
this.setGreen(green);
this.setBlue(blue);
}

... (code for other functions after those tests pass)

public double getRed(){
  return red;
}

public void setRed(double color1){
  if (color1 <= 1.0){
      if (color1 >= 0.0){
          red = color1;
      }
  }
  else if (color1>1.0){
      red=1.0;
  }
  else if (color1<0.0){
      red=0.0;
  }
}

}

每个getter和setter都是getRed / setRed的副本。我通过我无法访问的程序检查了定义,但这是我收到的输出:

测试失败:

场景:3.1 - 在调用setRed(-1.0)之后,getRed()的返回值应为0.0

颜色(1.0,1.0,1.0).setRed(-1.0) - 确定

颜色(1.0,1.0,1.0).getRed() - 预期0.0 - 返回1.0

所以setter正在运行,因为我需要它,但getter返回原始值。它不是一个孤立的案例,我的每个getter都会在每个setter成功运行时返回各自颜色的原始值(1.0)。

1 个答案:

答案 0 :(得分:2)

您的上一个条件else if (color1<0.0) { red=0.0; }将永远不会是true,因为color1小于0的所有情况都会在if (color1 <= 1.0)语句中首先被捕获。因此,永远不会设置值0.0