将if-else转换为switch case语句

-1 java

我最近开始学习Java。我的老师给了我们这份作业,内容是关于编写If-Else下面的Switch-Case语句代码并将其转换为语句代码。我If-Else正确编写了该语句代码,但其中Switch-Case一个似乎有一些错误。我越早得到答案越好。谢谢。

我要转换的内容:

int x;
System.out.println("type in a mark to see what grade it is");

Scanner input = new Scanner(System.in);
x = input.nextInt();

if (x >= 90 && x <= 100) {
    System.out.println("A");
}
if (x >= 80 && x < 90) {
    System.out.println("B");
}
if (x >= 70 && x < 80) {
    System.out.println("C");
}
if (x >= 60 && x < 70) {
    System.out.println("D");
}
if (x >= 50 && x < 60) {
    System.out.println("E");
}
if (x < 50 && x > 0) {
    System.out.println("F");
}
if (x <= 0 || x > 100) {
    System.out.println("invalid mark");
}

Run Code Online (Sandbox Code Playgroud)

我试过的


Scanner input = new Scanner(System.in);
int x = input.nextInt();
switch (x) {
    case x >= 90 && x <= 100:
        System.out.println("A");
            break;
    case x >= 80 && x < 90:
        System.out.println("B");
            break;
    case x >= 70 && x < 80:
        System.out.println("C");
            break;
    case x >= 60 && x < 70:
        System.out.println("D");
            break;
    case x >= 50 && x < 60:
        System.out.println("E");
            break;
    case x < 50 && x > 0:
        System.out.println("F");
            break;
    default:
        System.out.println("invalid mark");
Run Code Online (Sandbox Code Playgroud)

除了一些语法错误消息外,不提供任何实际输出。

Rus*_*lan 5

由于您的switch语句将int变量x作为输入参数,因此所有case语句都必须检查int值,而不是布尔值。这就是为什么会出现不兼容类型错误的原因。你可以做:

switch (x / 10) {
    case 9:
        System.out.println("A");
        break;
    case 8:
        System.out.println("B");
        break;
    ...
Run Code Online (Sandbox Code Playgroud)

查看更多java doc switch语句