在编写bat Logic-2时,我输入了下面列出的第一个方法: loneSum problem。除了一项测试之外,它对所有的测试都是正确的。它唯一失败的是所有变量都等于相同的整数。但当我在网上寻找解决方案时,我得到了下面列出的第二种方法,它起作用了。我认为我的方法和正确的解决方案之间唯一的区别是"else if(a==b && b==c){return 0;}“的位置。我的问题是,条件的顺序对"if else“语句有影响吗?(我为我的措辞提前道歉,英语不是我的第一语言。谢谢。)
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;
}发布于 2013-05-07 04:46:07
简单的示例,两个相同的方法,只是if else语句的顺序不同:
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。你认为它们会返回相同的字符串吗?
发布于 2013-05-07 04:45:50
是的,条件的顺序很重要。在您的代码中,首先测试if(a==b)。如果所有3个整数都相同,则这将是true,并且只会执行return c;。它甚至不会为其他条件而烦恼。
在if和else-if中,所有条件都是按顺序计算的,直到找到第一个true条件为止。
首先测试更具体的情况,即if(a==b && b==c)优先。
发布于 2013-05-07 04:48:21
当然,这很重要。
请看下面的代码片段:
if (a) {
doA();
} else if(a && b) {
doAB();
}比较:
if (a && b) {
doAB();
} else if(a) {
doA();
}让我们假设a和b都是true。
在第一种情况下,因为我们首先测试a,所以将调用doA()。在第二种情况下,将执行doAB()。
https://stackoverflow.com/questions/16406946
复制相似问题