setheight()不更改变量

问题描述 投票:1回答:1

我正在阅读Java教程,但被卡住了。当我执行wall.setHeight(-1.5)它返回我4而不是0的高度。谁能告诉我我的语法有什么问题吗?

public class Wall {
    private double width;
    private double height;

    public Wall(){
        System.out.println("Empty");

    }

    public Wall(double width, double height) {
        this.width = width;
        this.height = height;
        System.out.println("width=" + this.width + "height=" + this.height);
    }

    public void setWidth(double width) {
        if((this.width)<0){
            this.width =  0.00;
        }
    }

    public void setHeight(double height) {
        System.out.println("got here ");
        if((this.height)<0){
            this.height =  0.00;
        }
    }

    public double getWidth() {
        return width;
    }

    public double getHeight() {
        return height;
    }

    public double getArea(){
        return (this.width) * (this.height);
    }
}

public class main {
    public static void main(String[] args) {
        Wall wall = new Wall(5,4);
        System.out.println("area= " + wall.getArea());
        wall.setHeight(-1.5);
        System.out.println(wall.getHeight());
        System.out.println("width= " + wall.getWidth());
        System.out.println("height= " + wall.getHeight());
        System.out.println("area= " + wall.getArea());**
    }
}
java syntax
1个回答
0
投票

这就是为什么我总是建议传入一个与您要设置的变量名称不同的变量。您正在检查this.height <0 ...是否自然是您在构造函数中设置的值。

[this.height将引用Wall对象的变量height,而不是传递给setter的height

尝试一下:

public void setHeight(double h) {
  if(h < 0) {
    this.height =  0.00;
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.