Java getter 返回原始值而不是 setter 更新的值
Java getter returning original value instead of value updated by 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() 的 return 值应为 0.0
颜色(1.0,1.0,1.0).setRed(-1.0) - OK
Color(1.0,1.0,1.0).getRed() - 预期 0.0 - returned 1.0
所以 setter 正在按照我的需要运行,但是 getter 是 return 原始值。这不是一个孤立的案例,我的每个 getter 都是 return 各自颜色的原始值 (1.0),而每个 setter 都成功运行。
你的最后一个条件 else if (color1<0.0) { red=0.0; }
永远不会是 true
,因为当 color1
小于 0
的所有情况都会首先被 if 语句 if (color1 <= 1.0)
.因此,永远不会设置值 0.0
。
我正在做一个为照片制作滤镜的项目,我们使用 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() 的 return 值应为 0.0
颜色(1.0,1.0,1.0).setRed(-1.0) - OK
Color(1.0,1.0,1.0).getRed() - 预期 0.0 - returned 1.0
所以 setter 正在按照我的需要运行,但是 getter 是 return 原始值。这不是一个孤立的案例,我的每个 getter 都是 return 各自颜色的原始值 (1.0),而每个 setter 都成功运行。
你的最后一个条件 else if (color1<0.0) { red=0.0; }
永远不会是 true
,因为当 color1
小于 0
的所有情况都会首先被 if 语句 if (color1 <= 1.0)
.因此,永远不会设置值 0.0
。