我正在做一个(伪) 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";
}
}
....
}发布于 2016-01-24 18:00:44
您会得到错误,因为第一个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 */https://stackoverflow.com/questions/34979340
复制相似问题