java - Java if-then 树中缺少返回语句错误

标签 java compiler-errors return

我试图让 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/

相关文章:

java - 如何使用 Gradle 从项目文件(*.java、*.js、*、xml 等)创建源 JAR?

java - 如何在REST Web服务中处理带有多个参数的HTTP请求+限制数字范围

c - 在 C 中将字符串分配给 Hostent

c++ - EXIT_SUCCESS 和 EXIT_FAILURE。是一次编译到处运行还是一次编写到处编译?

javascript - 从 Parse promise 链返回数据

java - 帕克斯考试 2 : gave up waiting for service

java - 验证用户输入

C在不同gcc环境下编译错误

android - 错误 :(3, 5) 找不到与给定名称匹配的资源

java - 无法弄清楚为什么我在计算中得到空值