2

我正在做一个(伪)AI问答界面,我的“答案”类是一堆if语句:如果消息中的“a”然后返回这个“b”。

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

主类:

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

...

beginAnswers 类:

public String beginAnswers (String message) {

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

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

  ....

}
4

1 回答 1

3

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

return "Are you sure?";

如果达到,将终止方法的执行beginAnswers()并将控制权返回给调用者方法。所以后面的代码:

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

永远不会到达。

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

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

您还可以使用三元运算符在一行中加速整个过程,null如果这两个条件都不满足,则返回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 */
于 2016-01-24T18:00:44.757 回答