快速提问,
将变量限制在534和-840范围内的最佳和最有效的方法是什么。
我也在这里使用Math.max方法吗?
答案 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.max
和Math.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)是如何相关的。
答案 5 :(得分:0)
旧问题。我会把它留给别人用的
我通过注释解决了
@Max(value = 534)
@Min(value = -840)
private Short digits;