我有这个属性:
private int Number;
Run Code Online (Sandbox Code Playgroud)
我想限制这个数字,使它只能在值1 - 3之间.
我在设置值时是否在方法中执行此操作,或者是否有预定义的方法我只希望值1 - 3为此整数的有效值?
提前谢谢了.
编辑:
我想输入一个介于1-3之间的数字.
我已经尝试过使用while,do和for循环,其中每个都无法工作而不会陷入无限循环.
这是一些示例代码:
private int Number;
public void setNumber(int aNumber) {
int count = 1;
while (count !=0) {
if ((aNumber < 1) || (aNumber > 3)) {
System.out.println("Value is out of range 1-3");
System.out.println("Please try again");
break;
}
else {
this.Number = aNumber;
count = 0;
}
}
}
Run Code Online (Sandbox Code Playgroud)
Gre*_*ill 11
与某些语言(例如Ada)不同,Java没有办法"预先声明"可接受的数字范围.但是,如果将anumber类封装到类中,则可以使用setter方法强制执行此类限制:
class RestrictedRangeExample {
private int anumber;
public void setAnumber(int newanumber) {
if (newanumber >= 1 && newanumber <= 3) {
anumber = newanumber;
} else {
throw new IllegalArgumentException("anumber out of range");
}
}
}
Run Code Online (Sandbox Code Playgroud)
public void setAnumber(int value) {
if ((value < 1) || (value > 3))
throw new IllegalArgumentException("value is out of range for anumber");
this.anumber = value;
}
Run Code Online (Sandbox Code Playgroud)