java - 字节扫描仪未正确比较,Java

标签 java switch-statement java.util.scanner

我正在尝试比较 switch 语句中的扫描仪编号。 扫描仪工作正常,但未按应有的方式进行比较。

    private String gradeLevel;

    public byte askGrade(){
        Scanner scan = new Scanner(System.in);
        System.out.println("Please enter grade level; ");
        System.out.println(" 1-Freshman \n 2-Sophomore \n 3-Junior \n 4-Senior ");
        byte grade = scan.nextByte();
        switch(grade){
            case 1:  gradeLevel = "Freshman";
            case 2:  gradeLevel = "Sophomore";
            case 3:  gradeLevel = "Junior";
            case 4:  gradeLevel = "Senior";
            default: gradeLevel = "Withdrawn";
        }
        return gradeLevel;
    }

始终默认为“撤回”

最佳答案

在每种情况下都应该使用 break

来自switch documentation

Each break statement terminates the enclosing switch statement. Control flow continues with the first statement following the switch block. The break statements are necessary because without them, statements in switch blocks fall through: All statements after the matching case label are executed in sequence, regardless of the expression of subsequent case labels, until a break statement is encountered

Scanner scan = new Scanner(System.in);
System.out.println("Please enter grade level; ");
System.out.println(" 1-Freshman \n 2-Sophomore \n 3-Junior \n 4-Senior ");
byte grade = scan.nextByte();
String gradeLevel;
switch (grade) {
    case 1:
        gradeLevel = "Freshman";
        break;
    case 2:
        gradeLevel = "Sophomore";
        break;
    case 3:
        gradeLevel = "Junior";
        break;
    case 4:
        gradeLevel = "Senior";
        break;
    default:
        gradeLevel = "Withdrawn";
}
System.out.println(gradeLevel);

输出

Please enter grade level; 
 1-Freshman 
 2-Sophomore 
 3-Junior 
 4-Senior 
2
Sophomore

关于java - 字节扫描仪未正确比较,Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57878778/

相关文章:

java - 如何将我的状态机转换为 java?

java - 内部开关无法接受用户输入

java - 扫描仪在使用 next() 或 nextFoo() 后跳过 nextLine()?

java - Google App Engine - HttpClient 执行方法关闭连接而不获取数据

java - 如何用java将结果放在一个文件夹中?

JAVA:子类型和继承的概念是一回事吗?

c# - 如何在 C# 中切换大小写许多变量(检查值是否为 null 或空)以替换 if-else-if 链

java - Android 多维数组

java 不会使用 Scanner 和 System.in 分解具有多个 double 和 char 变量的用户输入

java - 将罗马数字转换为十进制值错误