我正在使用Java进行在线课程之一,在这种特定情况下,我对构造函数的参数处理有一些误解。 条件很简单:如果在调用构造函数时传递的参数值小于0,则字段的值应为0;否则,字段的值为0。 因此,我在创建新对象时调用了构造函数
Test test = new Test(1.125, -1.0);
第一个代码示例有效,并且可以完成工作(x = 1.125,y = 0),但这是处理参数的正确方法吗? (我听说不是) 看来我实际上是先更改了参数,而不是更改了字段。
public class Test{
private double x;
private double y;
public Test(double x, double y) {
if(x < 0){
x = 0;
}
if(y < 0){
y = 0;
}
this.x = x;
this.y = y;
}
}
然后我实际上已经尝试过正确更改该字段。调用构造函数时传递相同的参数(1.125,-1.0)。
public class Test{
private double x;
private double y;
public Test(double x, double y) {
if(x <= 0 && y >= 0){
this.x = 0;
this.y = y;
}
if(y <= 0 && x >= 0){
this.y = 0;
this.x = x;
}
if (x <= 0 && y <= 0){
this.x = 0;
this.y = 0;
}
else{
this.x = x;
this.y = y;
}
}
}
出于某种原因,构造函数调用将y的字段值设置为-1.0。
为什么?
我不排除我的表情吗?
答案 0 :(得分:3)
如果您尝试了该代码,则输入以下if-else的else块:
if (x <= 0 && y <= 0)
{
this.x = 0;
this.y = 0;
}
else
{
this.x = x;
this.y = y;
}
因此将覆盖第二条if语句分配的y值。您应该在代码中使用if-else if ... else。