如果返回无法访问的代码则嵌套

Nested if returning unreachable code

我在做一个(伪)AI问答界面,我的'answer'class是一堆if语句:if"a" in message然后 return 这个"b".

我希望能够通过插入嵌套的 if 来赋予它更多的深度,但是第二个 if 给出了 "Unreachable code"。我能做些什么来解决它?有没有更好的方法来做我正在尝试的事情?

主要class:

System.out.println("Type your message:");
String message = talkback.beginAnswers(in.nextLine());

...

beginAnswers class:

public String beginAnswers (String message) {

if("nothing".equalsIgnoreCase(message)) {
 return "Are you sure?";

     if("yes".equalsIgnoreCase(message)) {
       return "ok";
        }
   }

  ....

}

您收到错误是因为第一个 return 语句:

return "Are you sure?";

如果达到,将终止 beginAnswers() 方法的执行和 return 对调用方方法的控制。所以后面的代码:

if("yes".equalsIgnoreCase(message)) {
    return "ok";
}

永远达不到。

作为解决方案,您可以将嵌套的 if 语句从第一个语句中取出:

if("nothing".equalsIgnoreCase(message)) {
    return "Are you sure?";
}
else if("yes".equalsIgnoreCase(message)) {
    return "ok";
}

您还可以使用 三元运算符 和 return null if none 2个条件是true:

return "nothing".equalsIgnoreCase(message) ? "Are you sure?" : 
       "yes".equalsIgnoreCase(message) ? "ok" : null;
/* if message == "nothing" return "Are you sure?"
   if message == "yes" return "ok"
   if message != "yes" AND message != "nothing" return null 
   P.S: '==' and '!=' are for demonstration only. Keep using the .equals() 
   method for matching strings */