在案例标签

时间:2018-02-21 13:37:17

标签: java switch-statement

我正在学习java,我遇到带有表达式的switch-case语句有问题。有谁可以帮助我吗? 我无法理解我犯错误的地方。

package SecondSet_StartingArray;

import java.util.Scanner;

public class Testing 
{
    public static void main(String[] args) {

    System.out.println("Enter a Number between 1 & 100");
    Scanner scan = new Scanner(System.in);
    int i = scan.nextInt();
    switch (i)
    {
        case (i>90):    System.out.println("Rating 5");break;
        case (i<=90):   System.out.println("Rating 4");break;
        case (i<=60):   System.out.println("Rating 3");break;
        case(i<=30):    System.out.println("Rating 2");break;
        case(i>29):     System.out.println("Rating 1");break;
    }
}

}

3 个答案:

答案 0 :(得分:5)

您不能将switch-case与case (i<=90)这样的布尔表达式一起使用。您的案例必须是要评估的常量表达式。

case 90: whatever; break;
case 120: whatever; break;
case SOME_CONSTANT: whatever; break;

根据您的需要,您需要使用if-else-if语句。

答案 1 :(得分:2)

您想要实现的是if-else-statement。当您尝试评估常量值时,会使用Switch-Statements

答案 2 :(得分:1)

正如您可以阅读Java语言规范here

以下所有内容必须为true,否则会发生编译时错误:

  1. 与switch语句关联的每个case常量表达式必须可分配(第5.2节)到switch表达式的类型。
  2. 与switch语句关联的两个case常量表达式中没有两个可能具有相同的值。
  3. 没有开关标签为空。
  4. 最多一个默认标签可能与同一个switch语句关联。
  5. 在您的代码中,第一点不满意。您可能希望在此处使用if-else-if语句而不是switch来执行i中存储的值的正确检查。