首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >条件的顺序对if else语句有影响吗?

条件的顺序对if else语句有影响吗?
EN

Stack Overflow用户
提问于 2013-05-07 04:42:14
回答 6查看 6.8K关注 0票数 1

在编写bat Logic-2时,我输入了下面列出的第一个方法: loneSum problem。除了一项测试之外,它对所有的测试都是正确的。它唯一失败的是所有变量都等于相同的整数。但当我在网上寻找解决方案时,我得到了下面列出的第二种方法,它起作用了。我认为我的方法和正确的解决方案之间唯一的区别是"else if(a==b && b==c){return 0;}“的位置。我的问题是,条件的顺序对"if else“语句有影响吗?(我为我的措辞提前道歉,英语不是我的第一语言。谢谢。)

代码语言:javascript
复制
 public int loneSum(int a, int b, int c) {
      int sum = a + b + c;
      if(a==b)
      {return c;}
      else if(b==c)
      {return a;}
      else if(c==a)
      {return b;}
      else if(a==b && b==c)
      {return 0;}
      else
      return sum;
    }

public int loneSum(int a, int b, int c) {
  int sum = a + b + c;

if(a==b && b==c)
  {return 0;}
  else if(b==c)
  {return a;}
  else if(c==a)
  {return b;}
  else if(a==b)
  {return c;}
  else
  return sum;
}
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-05-07 04:46:07

简单的示例,两个相同的方法,只是if else语句的顺序不同:

代码语言:javascript
复制
String method1(int input) {
    if (input > 1) {
        return "Foo";
    } else if (input > 5) {
        return "Bar";
    }
    return "Baz";
}

String method2(int input) {
    if (input > 5) {
        return "Bar";
    } else if (input > 1) {
        return "Foo";
    }
    return "Baz";
}

用输入调用这两个方法,假设是9。你认为它们会返回相同的字符串吗?

票数 1
EN

Stack Overflow用户

发布于 2013-05-07 04:45:50

是的,条件的顺序很重要。在您的代码中,首先测试if(a==b)。如果所有3个整数都相同,则这将是true,并且只会执行return c;。它甚至不会为其他条件而烦恼。

ifelse-if中,所有条件都是按顺序计算的,直到找到第一个true条件为止。

首先测试更具体的情况,即if(a==b && b==c)优先。

票数 3
EN

Stack Overflow用户

发布于 2013-05-07 04:48:21

当然,这很重要。

请看下面的代码片段:

代码语言:javascript
复制
if (a) {
    doA();
} else if(a && b) {
   doAB();
}

比较:

代码语言:javascript
复制
if (a && b) {
    doAB();
} else if(a) {
   doA();
}

让我们假设ab都是true

在第一种情况下,因为我们首先测试a,所以将调用doA()。在第二种情况下,将执行doAB()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16406946

复制
相关文章

相似问题

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