用switch语句表示范围

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用switch语句表示范围相关的知识,希望对你有一定的参考价值。

参考技术A 基本的C语言语法问题。switch()内的表达式必须有一个定值case后面只能是表达式的一个定值,不能指定范围。如果想要实现以上可以使用if(i>40&&i<46)语句。  switch英[swɪtʃ]美[swɪtʃ]  n.开关;转换,转换器;软鞭子;[信]接线台;  vt.&vi.转换;转变,改变;关闭电流;鞭打;  vt.转换;(棍棒、鞭子等)挥动;迅速转动;鞭打;追问

如果用switch语句写这个程序,输入一个数如果在1到20之间输出1411,如果是21到50输出222。怎么写?这之间差的太多。

java-范围为int的switch语句

我想使用switch语句检查一定范围的数字,我在一些地方说了类似case 1...5case (score >= 120) && (score <=125)可以工作,但我仍然会继续出现错误。

我想要的是如果数字是1600-1699之间的,那么做些事。

我可以执行if语句,但认为是时候开始使用switch了。

答案

在JVM级别switch语句与if语句根本不同。

开关是关于编译时常数,必须在编译时全部指定它们,以便javac编译器产生有效的字节码。

在Java中,switch语句不支持范围。必须指定所有值(可以利用掉大小写)和default大小写。 if语句必须处理其他任何事情。

另一答案

据我所知,对于Java中的切换案例,范围是不可能的。你可以做类似

的事情
switch (num) {
  case 1: case 2: case 3:
    //stuff
    break;
  case 4: case 5: case 6: 
    //more stuff
    break;
  default:
}

但是到那时,您最好还是坚持使用if语句。

另一答案

您可以使用三元运算符,? :

int num = (score >= 120) && (score <=125) ? 1 : -1;
num = (score >= 1600) && (score <=1699 ) ? 2 : num;
switch (num) {
    case 1 :
       break;
    case 2 :
       break;
    default :
      //for -1
}
另一答案

如果您really要使用switch语句-这是一种使用enum创建伪范围的方法,因此可以切换枚举。

首先,我们需要创建范围:

public enum Range {

    TWO_HUNDRED(200, 299),
    SIXTEEN_HUNDRED(1600, 1699),
    OTHER(0, -1); // This range can never exist, but it is necessary
                  // in order to prevent a NullPointerException from
                  // being thrown while we switch

    private final int minValue;
    private final int maxValue;

    private Range(int min, int max) {
        this.minValue = min;
        this.maxValue = max;
    }

    public static Range from(int score) {
        return Arrays.stream(Range.values())
            .filter(range -> score >= range.minValue && score <= range.maxValue)
            .findAny()
            .orElse(OTHER);
    }
}

然后是您的开关:

int num = 1630;
switch (Range.from(num)) {

    case TWO_HUNDRED:
        // Do something
        break;

    case SIXTEEN_HUNDRED:
        // Do another thing
        break;

    case OTHER:
    default:
        // Do a whole different thing
        break;
}

以上是关于用switch语句表示范围的主要内容,如果未能解决你的问题,请参考以下文章

java switch语句中如何判断数值范围

如何在switch语句中选择一个值范围

java中switch case怎么表示范围

用switch怎么判断一个变量值的范围

switch case的用法

java-范围为int的switch语句