Java 缺少带有开关的返回语句
这是我为学校制作的一个课程中的一种方法。 该开关获取一个随机整数,并使用它返回从类AlertStatus派生的特定类的对象Java 缺少带有开关的返回语句,java,switch-statement,return,Java,Switch Statement,Return,这是我为学校制作的一个课程中的一种方法。 该开关获取一个随机整数,并使用它返回从类AlertStatus派生的特定类的对象 出于某种原因,我不断收到一个错误,上面代码块的第9行(上面代码的最后一行)显示“missing return statement}”。我不明白为什么它会这样说,因为我已经为每种情况提供了返回语句。在默认情况下,您没有返回任何内容。我想你想要像这样的东西 public AlertStatus nextStatus(){ int randNum = randNumGen
出于某种原因,我不断收到一个错误,上面代码块的第9行(上面代码的最后一行)显示“missing return statement}”。我不明白为什么它会这样说,因为我已经为每种情况提供了返回语句。在
默认情况下,您没有返回任何内容。我想你想要像这样的东西
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.");
}
}
默认情况下必须返回某些内容。如果您想指示错误,最好的方法是抛出一个指示错误的异常
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.");
}
}
如果数字是4,它会返回什么?(是的,数字不能是4,但编译器不够聪明,无法知道这一点)谢谢!这就解决了问题。只是想澄清一下,如果我有在开关中返回某些内容的情况,那么默认情况下也必须返回某些内容?@Bernandion如果您的方法返回某些内容,那么通过该方法的每个可能路径都必须生成一个返回值。它可能是null
,也可能是抛出异常。但它没有为您插入说明。编译器无法确定nextInt(3)
的返回值是否在范围0-2
内。
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");
}
}