我试图让 Critter 程序从四个选项中随机选择一种攻击类型;我以为我已经涵盖了我的返回语句基础,但是我从 drjava 收到了“缺少返回语句”错误:
public Attack fight(String opponent) {
int fightChoice = new Random().nextInt(4);
if(fightChoice == 0){
return Attack.ROAR;
} if(fightChoice == 1){
return Attack.POUNCE;
} if(fightChoice == 2){
return Attack.SCRATCH;
} if(fightChoice == 3){
return Attack.FORFEIT;
}
}
知道为什么会这样吗?
最佳答案
基本上,编译器不够聪明,无法确定您已经用四个 if
涵盖了所有可能性。语句(它并不真正了解有关 Random.nextInt()
返回值的合约)。
因此您需要添加一个虚拟 return
final 后if
.你在那里返回什么并不重要,因为它实际上是死代码。但是,返回某种未使用或明显无效的值是一种很好的风格。
编辑:再三考虑,与其返回虚拟值,不如无条件抛出某种“程序员错误”异常。
关于java - Java if-then 树中缺少返回语句错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13663110/