首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套的if返回不可访问的代码

嵌套的if返回不可访问的代码
EN

Stack Overflow用户
提问于 2016-01-24 17:59:27
回答 1查看 256关注 0票数 2

我正在做一个(伪) AI的问答接口,我的‘答案’类是一堆if的语句:如果消息中的"a“,那么返回这个"b”。

我想通过插入嵌套的if来给它更大的深度,但是那第二个if给出了“无法到达的代码”。我能做什么来解决这个问题?有没有更好的方法来做我想做的事?

主修班:

代码语言:javascript
复制
System.out.println("Type your message:");
String message = talkback.beginAnswers(in.nextLine());

..。

beginAnswers类:

代码语言:javascript
复制
public String beginAnswers (String message) {

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

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

  ....

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-24 18:00:44

您会得到错误,因为第一个return语句:

代码语言:javascript
复制
return "Are you sure?";

如果到达,是否会终止执行beginAnswers()方法&将控制返回给调用方方法。所以下面的代码:

代码语言:javascript
复制
if("yes".equalsIgnoreCase(message)) {
    return "ok";
}

永远无法联系到

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

代码语言:javascript
复制
if("nothing".equalsIgnoreCase(message)) {
    return "Are you sure?";
}
else if("yes".equalsIgnoreCase(message)) {
    return "ok";
}

您还可以使用三元操作符将整件事情放大到一行中,如果这两个条件中没有一个是true,则返回null

代码语言:javascript
复制
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 */
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34979340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档