Java类处理大于或等于

时间:2018-05-03 02:56:15

标签: java

我有一个Java分配来为程序添加throw / catch。一切正常,除了它应该捕获小于0或大于20的任何东西,它会捕获-1及以下或21及以上,但它似乎处理大于大于或等于

类别:

auto GetStaffMap()
{
    return staffMap;
}

测试类:

public class Rectangle {

private double width;
private double height;

public Rectangle(double width, double height) {
    setWidth(width);
    setHeight(height);
}

public void setWidth(double width) {
    if (width < 0 || width > 20) {
        throw new IllegalArgumentException("Width is not in range");
    }
    this.width = width;
}

public void setHeight(double height) {
    if (height < 0 || height > 20) {
        throw new IllegalArgumentException("Height is not in range");
    }
    this.height = height;
}

public double getWidth() {
    return width;
}

public double getHeight() {
    return height;
}

public double calculatePerimeter() {
    return 2 * (width + height);
}

public double calculateArea() {
    return width * height;
}
}

为什么将0和20视为有效值?

1 个答案:

答案 0 :(得分:2)

根据你的代码:

if(width < 0 || width > 20)

表示如果width = 0:

width < 0 = false 
width > 20 = false 

if(false || false ) =&gt; false ,因为它是OR运算符。

如果要检查0到20之间的值。

您的情况应为(宽度<= 0 ||宽度&gt; = 20)

如果您想要专门检查0到20之间的值。

您的情况应为(宽度<0 ||宽度> 20)