我正在做一个(伪)人工智能问题和答案界面,我的“答案”类是一堆 if 语句:如果消息中的“a”那么返回这个“b”。
我希望能够通过插入嵌套的 if 来赋予它更多的深度,但是第二个 if 给出了“无法访问的代码”。我能做什么来解决它?有更好的方法来做我正在尝试的事情吗?
主类:
System.out.println("Type your message:");
String message = talkback.beginAnswers(in.nextLine());
...
开始答案类:
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()
方法的执行并将控制权返回给调用者方法。所以后面的代码:
if("yes".equalsIgnoreCase(message)) {
return "ok";
}
永远无法达到。
作为一种解决方案,您可以将嵌套的 if
语句从第一个语句中取出:
if("nothing".equalsIgnoreCase(message)) {
return "Are you sure?";
}
else if("yes".equalsIgnoreCase(message)) {
return "ok";
}
您还可以使用三元运算符在一行中完成整个过程,如果这两个条件都不为true
,则返回null
>:
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 */
关于java - 如果返回无法访问的代码则嵌套,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34979340/