if else阻止的替代方案 - 检查数字是在2个数字之间

mr0*_*0mr 0 java if-statement

目前我有一个类似于下面的块:

if (number< 11 && number>= 5) {
    return 1;
} else if (number< 15 && number>= 11) {
    return 2;
} else if (number< 45 && number>= 15) {
    return 3;
}
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

mat*_*sev 10

如何计算结果?

return number / 5;
Run Code Online (Sandbox Code Playgroud)

编辑:

正如评论中所指出的,这仅在number> = 0时有效.如果不是这样,只需添加适当的if语句.

  • 实际上它根本不起作用.这突出了调试的必要性. (3认同)

Sam*_*ica 5

你可以尝试做一些事情

return (int)number/5
Run Code Online (Sandbox Code Playgroud)

这将完全符合你的代码所做的

只要您的范围遵循任何数学模式,您就可以做类似的事情


Lui*_*oza 5

我会使用两个数组,1用于保存数字以进行比较,其他用于保存答案.显示这种方法的一个非常简单的例子:

public int getResult(int number) {
    int[] results = { 1, 2, 3 };
    int[] numbers = { 5, 11, 15, 45 };
    for(int i = 0; i < numbers.length - 1; i++) {
        if (between(number, numbers[i], numbers[i+1])) {
            return results[i];
        }
    }
    //return a default value
    //return results[results.length - 1];
    return 0;
}

public boolean between(int x, int a, int b) {
    return (x >= a && x < b);
}
Run Code Online (Sandbox Code Playgroud)