繁体   English   中英

缺少带有开关的返回语句

[英]Missing return statement with switch

public AlertStatus nextStatus(){
    int randNum = randNumGen.nextInt(3);
    switch(randNum){
        case 0: return new AlertStatusGreen();
        case 1: return new AlertStatusYellow();
        case 2: return new AlertStatusRed();
        default: System.out.println("ERROR: no random number.");
    }
}

这是我必须为学校准备的课程的一种方法。 开关采用一个随机整数,并使用它返回从AlertStatus类派生的某个特定类的对象。

由于某种原因,我在上面的代码块的第9行(上面的代码的最后一行)中总是收到错误消息“缺少返回语句}”。 我不明白为什么这样说,尽管我已经看到每种情况的返回语句。

default情况下,您不返回任何内容。 我想你想要类似的东西

public AlertStatus nextStatus(){
    int randNum = randNumGen.nextInt(3);
    switch(randNum){
        case 0: return new AlertStatusGreen();
        case 1: return new AlertStatusYellow();
        default: return new AlertStatusRed();
        // default: System.out.println("ERROR: no random number.");
    }
}

默认情况下必须返回某些内容。 如果要指示错误,最好的办法是引发异常以指示错误。

public AlertStatus nextStatus(){
    int randNum = randNumGen.nextInt(3);
    switch(randNum){
       case 0: return new AlertStatusGreen();
       case 1: return new AlertStatusYellow();
       case 2: return new AlertStatusRed();
       default: throw new InvalidArgumentException("invalid argument");
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM