限制变量值 - 最好的方法

时间:2011-08-03 09:58:41

标签: java

快速提问,

将变量限制在534和-840范围内的最佳和最有效的方法是什么。

我也在这里使用Math.max方法吗?

6 个答案:

答案 0 :(得分:4)

if (variable < -840 || variable > 534)
   throw new IllegalArgumentException(variable + " is out of range");

如果您希望能够在运行时关闭此功能,请查看assert关键字。

答案 1 :(得分:1)

我不太清楚你在问什么,但如果它像一个类变量这样的一般场景,最好和最简单的方法是封装你的变量,并在setter方法中检查变量并抛出一个例外情况,如果它超出范围。

答案 2 :(得分:1)

Math.max会贵一点,但更重要的是对读者来说不是很直接。

if(number > MIN && number < MAX)是最直接的,也是最好的检查方式。

答案 3 :(得分:0)

为MAX定义两个常数,一个用于MIN,并且始终检查变量是否在其中

答案 4 :(得分:0)

现有的答案都没有帮助我,所以这里是我找到的(如果其他人正在寻找相同的答案):

此解决方案不是抛出错误,而是接受限制之上和之下的输入,只输出限幅值。

Math.maxMath.min对此有帮助:

Math.max(Math.min(input, MAX), MIN)

以下是三个基本案例;限制中的一个整数,一个在上面,一个在下面:

static final int MIN= -840;
static final int MAX = 534;

int inputX = -892; // less than minNumber
int inputY = 290; // within range
int inputZ = 1234; // greater than maxNumber

System.out.println( Math.max(Math.min(inputX, MAX), MIN) ); // -840
System.out.println( Math.max(Math.min(inputY, MAX), MIN) ); // 290
System.out.println( Math.max(Math.min(inputZ, MAX), MIN) ); // 534

此图显示输入(x)和输出(y)是如何相关的。

input/output graph

答案 5 :(得分:0)

旧问题。我会把它留给别人用的

我通过注释解决了

@Max(value = 534)
@Min(value = -840)
private Short digits;