switch语句不起作用

dad*_*ona 1 java syntax switch-statement

为什么这个java switch语句一直告诉我我的语句不是语句

public void setConstant(float inNumGrade)
{
    this.yourNumberGrade = inNumGrade;

    switch (this.yourLetterGrade)
    {
        case 'A':
            this.yourNumberGrade >= 0.90;
            break;

        case 'B':
            this.yourNumberGrade >= .8;
            break;

        case 'C':
            this.yourNumberGrade >= .7;
            break;

         case 'D':
            this.yourNumberGrade >= .6;// not a statement

         default:

    } // end switch
}
Run Code Online (Sandbox Code Playgroud)

Eri*_*ich 13

我明白你要做什么,但我认为你是以错误的方式绕过它.你似乎想要做的是,根据开关设置"字母等级",而不是数字等级!我认为你真正想做的是:

public void setGrades(float inNumGrade)
{
    this.yourNumberGrade = inNumGrade;

    if( this.yourNumberGrade >= 0.90)
        this.yourLetterGrade = 'A';
    else if(this.yourNumberGrade >=0.80)
        this.yourLetterGrade = 'B';
    else if (this.yourNumberGrade >=0.70)
        this.yourLetterGrade= 'C';
    else if (this.yourNumberGrade >=0.60)
        this.yourLetterGrade= 'D';
    else
        this.yourLetterGrade= 'F';    
}
Run Code Online (Sandbox Code Playgroud)

您无法在Java中切换范围.如果你想用一个开关做这个,你必须做一个switch(true),然后做case this.yourNumberGrade>=0.90:

正如我所料,你误解了开关的工作原理.如果您真的需要通过开关执行此操作(如果/ else/else,如果更好),您必须这样做:

public void setGrades(float inNumGrade)
{
    this.yourNumberGrade = inNumGrade;
    switch(true)
    {
        case this.yourNumberGrade >= 0.90:
            this.yourLetterGrade = 'A';
            break;
        case this.yourNumberGrade >=0.80:
            this.yourLetterGrade = 'B';
            break;
        case this.yourNumberGrade >=0.70:
            this.yourLetterGrade= 'C';
            break;
        case this.yourNumberGrade >=0.60:
            this.yourLetterGrade= 'D';
            break;
        default:
            this.yourLetterGrade= 'F';    
            break;
    }//end switch
}
Run Code Online (Sandbox Code Playgroud)

  • 他的问题是标记为Java.您的第二个代码段不能用Java编译,因为switch表达式必须是int或enum类型,而不是boolean. (4认同)