在Java中设置Integer的范围

sil*_*rzx 1 java integer

我有这个属性:

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)

  • 我认为在那种情况下,cofoja是不必要的. (4认同)

duf*_*ymo 4

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)

  • 我更喜欢否定版本“if ((1 &lt;= value) &amp;&amp; (value &lt;= 3))”。更具可读性 - 设置优先,“else”子句中的异常。 (3认同)