如何正确处理构造函数参数

时间:2019-04-20 13:44:06

标签: java

我正在使用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。

为什么?

我不排除我的表情吗?

1 个答案:

答案 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。