缺少带开关的return语句

时间:2015-03-01 01:17:03

标签: java switch-statement return

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行(上面代码中的最后一行)。我不明白为什么它这样说虽然看到我已经为每个案件都有回复陈述。

2 个答案:

答案 0 :(得分:5)

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.");
    }
}

答案 1 :(得分:1)

默认情况下必须返回一些内容。如果你想指出一个错误,最好的办法是抛出一个异常来指示它。

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