我需要在java

时间:2016-10-10 11:38:24

标签: java

我需要为我可以使用的范围值实现switch语句,否则我认为switch的性能会更好。

我有一个要求,如果变量的值在1-150之间,我将处理我的逻辑。如果变量的值在150-300之间,那么其他一些逻辑和if范围是300-450然后是一些不同的逻辑等等。

所以我在这种情况下如何使用开关,因为我通常使用具有固定值的开关。 提前谢谢。

2 个答案:

答案 0 :(得分:8)

我建议你使用公式

;

如果您使用switch (value / 150) { case 0: // 0 - 149 break; case 1: // 150 - 299 break; case 2: // 300 - 449 break; default: // otherwise. } ,则会获得1-150,151-300,301-450等

编辑:由于整数除法的性质,case 0也将在switch((value-1)/ 150){...}中接受-148-0。为了避免这种情况,可以使用if / else语句以及条件运算符。

答案 1 :(得分:0)

这是不可能的。

如果您查看Java Language Specification for switch,则会看到case后的表达式必须是ConstantExpressionEnumConstantName。 这些都不是范围。

评论中指出了一些备选方案。您可以使用if语句;除非你的案件数量非常多,否则在性能方面不应该有太大差异 或者您可以(根据this answer, linked in the comments by @tomas)创建单独的函数来区分不同的范围。

如果范围是常规的(例如101-200,201-300等),您也可以使用公式。小心舍入错误!测试公式的边缘情况以确保其正确。