想问一问这段代码有什么错么,输入分数后相应的等级显示不出来。

package com.jw;

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.print("输入一个百分制分数:");
    int grade = input.nextInt();
    switch (grade) {
        case 1:
        if (grade >= 90) {
            System.out.println("优秀");
        }
        case 2:
        if (grade >= 80) {
            System.out.println("良好");
        }
        case 3:
        if (grade >= 70) {
            System.out.println("中等");
        }
        case 4:
        if (grade >= 60) {
            System.out.println("及格");
        }
        case 5:
        if (grade < 60) {
            System.out.println("不及格");
        }
        break;
    }
    System.out.println("成绩等级:");
}

}

import java.util.Scanner;

/**
 * @author eleven
 * @date 2021/9/9 9:51
 * @apiNote
 */
public class ElevenTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int score = scanner.nextInt();
        switch (score / 10){
            case 10 :
            case 9 :
                System.out.println("优秀");
                break;
            case 8 :
                System.out.println("良好");
                break;
            case 7 :
                System.out.println("中等");
                break;
            case 6 :
                System.out.println("及格");
                break;
            default:
                System.out.println("不及格");
                break;
        }
    }
}

case 错了。
比如: 你输入1 程序才会走 >=90 行。
你只有输入 1 ,2,3,4,5才会有打印等级,而且打印的等级只会是不及格。

case 90
case 80...
case后面跟条件,if去掉,case就是判断了

这种有范围的如:七十分到八十分的不适合用switch(case后适合常量),例如,月份题用可用switch,直接if-else不香吗?