我有一个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视为有效值?
答案 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)