验证变量在Java范围内

Dia*_*a E 2 java

我有三个整数,在作为命令行参数传入后分配给变量.我想验证每个整数是否在1-5范围内.有没有办法在Java中完成此操作而不使用如下所示的if语句?我想避免这样做(note-pseudocode):

if ((a & b & c) > 0 && (a & b & c) < 6) {
//blah blah
}
Run Code Online (Sandbox Code Playgroud)

主要是,如果将来添加额外的参数等,这将无法很好地扩展.是否有更优雅的方法来实现这一目标?

Doo*_*nob 10

我认为可以做出的唯一改进(可读性)是这样的:

public boolean isInRange(int i) {
    return i > 0 && i < 6;
}
Run Code Online (Sandbox Code Playgroud)

然后调用该函数.

如果a,b和,并且c相关,您也可以考虑使用数组并循环.就像是:

public boolean allInRange(int[] arr) {
    for (int i = 0; i < arr.length; i ++) {
        if (!isInRange(arr[i])) return false;
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)


Ste*_*nar 6

这样的事情怎么样:

validate(int ... args) {
    for (int arg : args) {
        if (arg < 1 || arg > 5) {
            throw IllegalArgumentException("Argument is not in valid range [1..5]: " + arg);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后调用这个帮助方法

validate(a,b,c);
Run Code Online (Sandbox Code Playgroud)

  • 哦,停止炫耀你的幻想varargs.`:)`+1 (2认同)