黑马程序员技术交流社区
标题:
搞不清if,else
[打印本页]
作者:
高境
时间:
2012-12-20 20:50
标题:
搞不清if,else
本帖最后由 高境 于 2012-12-21 16:11 编辑
class Demo
{
public static void main(String[] args)
{
int m=0,n=3;
if(m>0)
if(n>2)
System.out.println("A");
else
System.out.println("B");
}
}
这段代码运行时没有结果的,请问else是和哪个if对应,为什么没有结果?
作者:
王小聪
时间:
2012-12-20 20:54
本帖最后由 王小聪 于 2012-12-20 23:07 编辑
您好,您的else是和第二个if对应的
补齐括号后的结果是
class Demo
{
public static void main(String[] args)
{
int m=0,n=3;
if(m>0){
if(n>2){
System.out.println("A");
}else{
System.out.println("B");
}
}
}
作者:
王小聪
时间:
2012-12-20 20:55
本帖最后由 王小聪 于 2012-12-20 21:03 编辑
您好,您的else是和第二个if对应的
补齐括号后的结果是
class Demo
{
public static void main(String[] args)
{
int m=0,n=3;
if(m>0){
if(n>2){
System.out.println("A");
}else{
System.out.println("B");
}
}
}
因为你第一个条件m=0,你的判断是m>0,直接就是false了,所以里面没走,所以没有结果
简单来说就是跳过了下面 的代码
作者:
田向向
时间:
2012-12-20 21:15
本帖最后由 田向向 于 2012-12-20 21:25 编辑
。
作者:
陈雪平
时间:
2012-12-20 21:59
else总是与离自己最近的那个if配对,所以此段代码的else与第二个if对应
作者:
王钊
时间:
2012-12-20 22:12
else与离它最近的那个if配对,这道题第一个if判断m是否大于0,
结果判断为false,接下来的一行代码也就是第二个if就不会执行了,else也就不会执行。
因此,没有任何结果。
作者:
郭金龙
时间:
2012-12-20 22:13
1、else配对是遵循就近原则,所以可以看出你的else是和第二个if配对的,
2、没有结果是因为你的一个条件m>0,没有满足所以下面的这个if是跳过的,又因为这个if和下面的else是一起的,所以这里的if和else是不会被执行到的。
3、看你以前回答题目觉得你肯定懂这个的。一般代码要是这样写是不符合规范的吧。考试可能会有这样的题目,但是实际应用中希望我们就按照老师说的去做吧。
作者:
种生祥
时间:
2012-12-20 22:23
就近。{:soso_e141:}
作者:
王瀛
时间:
2012-12-20 23:10
if和else是配对出现的,其遵循的是“就近”原则,即:在代码中找到第一个else,然后向上找,出现的离这个else最近的if就是与其配对的。
在这个代码中if(n>2)与else是一对。
第一个if(m>0)没有与之配对的else。
但是jvm在读代码的时候,首先读取了if(m>0),而前面代码中m=0。故判断结果为false,于是后面代码不会执行,所以没有结果。
作者:
358998716@qq.co
时间:
2012-12-20 23:59
我想说的是你的需求是什么...可以理解是评等级吗?if m>0 且 n>2 是“A”...
else 是:“B”的....
按这个需求的话你要该代码...
小弟乱说,见谅!
作者:
崔政
时间:
2012-12-21 00:00
这是if else 的简写形式,当if或else下面只有一条语句的时候,可以省略花括号。
何为一条语句,比如说一个分号结束,或者你现在写的if else。else总是和他最近的成对。
包括try catch代码开,虽然占好几行,也是算一条语句。。说的有点荒唐,不过事实如此。。
举例:
class Test{
public static void main(String[] args) {
if(2>1)
try{
System.out.println("2>1");
}catch(Exception e){
System.out.println(e.toString());
}
}
}
复制代码
作者:
黄锦成
时间:
2012-12-21 11:01
不加{}的话,一般来说,最后一个if和紧接着的else是一对的
作者:
梁胜海
时间:
2012-12-21 14:57
陈雪平 发表于 2012-12-20 21:59
else总是与离自己最近的那个if配对,所以此段代码的else与第二个if对应
就这女的回答靠谱
作者:
kasa0421
时间:
2012-12-21 16:10
1,if else 就近配对的原则
2,如果你搞不明白,把代码写的规范些,加上几个{}会方便让你看清代码
3,没有执行 是因为你的变量m=0;if(m>0) 这个条件为false,所以后面的代码是不会执行的,
作者:
§風過無痕§
时间:
2013-6-20 16:24
else总是与离它最近的if配对!这是原则
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2