Unreachable Statement with Break

前端 未结 4 1460
北海茫月
北海茫月 2020-12-11 23:09

So I had a previous question but realized I posted the wrong offending code. I\'ve marked the offending statements below.

What I am trying to do is set the preceden

4条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-11 23:49

    The return statement effectively exits the method immediately. Since you've placed return statements inside the switch block for each case, whichever case is matched will, according to your code, return whatever value is indicated immediately. The break therefore cannot be executed, hence the error. You have two options:

    1- Set a value, and return at the end of the method:

    protected int getPrec(){
        int prec = 0;
        switch(val.getName()) {
            case "LParen": 
                prec = 0;
                break;
            case "RParen": 
                prec = 0;
                break;
            case "Mult":
                prec = 1;
                break;
            case "Div": 
                prec = 1;
                break;
            case "Mod": 
                prec = 1;
                break;
            case "Add": 
                prec = 2;
                break;
            case "Sub": 
                prec = 2;
                break;
            default:
                prec = 0;
                break; // technically unnecessary since we're at the end already but adding for completeness.
        }
            return prec;
    }
    

    2- Ditch the break; statements and keep the return statements as you've written them.

    Personally I would prefer the first option as its cleaner and more readable to me. Plus it makes it easier to expand whatever actions need to be done in one or more cases if need be in the future.

    By the way, watch your naming convention. You presently have:

    public final class opType // bad naming
    

    Since this is a class, the Java standard is to capitalize the first letter of the class. So it should be:

    public final class OpType // good naming
    

提交回复
热议问题