【问题标题】:Byte Scanner is not comparing properly, Java [duplicate]字节扫描仪没有正确比较,Java [重复]
【发布时间】:2019-09-10 22:08:30
【问题描述】:

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

    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;
    }

它总是默认为“撤回”

【问题讨论】:

    标签: java switch-statement java.util.scanner


    【解决方案1】:

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

    来自switch documentation

    每个 break 语句都会终止封闭的 switch 语句。控制流继续 switch 块之后的第一条语句。 break 语句是必要的,因为没有它们,switch 块中的语句就会失败:匹配 case 标签之后的所有语句都按顺序执行,无论后续 case 标签的表达式如何,直到遇到 break 语句

    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
    

    【讨论】:

    • 天哪 ??‍♀️...谢谢,我很感激!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 2018-05-30
    • 2013-01-31
    • 2018-10-08
    相关资源
    最近更新 更多