黑马程序员技术交流社区
标题:
if语句的过程
[打印本页]
作者:
陈世涛
时间:
2012-7-12 18:32
标题:
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-7-12 18:35
这个题是没有结果输出的,因为else语句是第二个if一体的,
if(m>0)//条件不满足
控制最近一条语句,而
if(n>2)
System.out.println("A");
else
System.out.println("B");
是一整条语句。
所以没有输出内容
作者:
丁二跃
时间:
2012-7-12 18:40
本帖最后由 丁二跃 于 2012-7-12 19:22 编辑
偶错了{:soso_e109:} ……
作者:
朱东方
时间:
2012-7-12 18:45
class Demo
{
public static void main(String[] args)
{
int m=0,n=3;
if(m>0)
//条件满足执行if(n>2),不满足执行else。但这里没有和它配对的else。所以就没有结果了。
if(n>2)
System.out.println("A");
else
//else与离它最近的没有配对的if配对。
System.out.println("B");
}
}
------------------------------------------------------------------------
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-7-12 19:17
本帖最后由 罗京雨 于 2012-7-12 19:30 编辑
public static void main(String[] args)
{
int m=0,n=3;
if(m>0) //
m=0时,if语句中得出的是false,所以下面的没有执行。
{}
//
这里就相当于有一个默认的大括号,里面什么语句都没有,因为没有执行,所以看不到结果。
if(n>2)//
这一段其实是if和else语句。是一个整体。因为上面的是false,所以这段不执行。
System.out.println("A");
else
System.out.println("B");
首先这个程序在java语法上是没有错误的,编译的时候能是运行的,但是没有结果。
作者:
汤密奕
时间:
2012-7-12 21:39
else与离它最近的if配对,即与if(n>2)配对
整个程序写规范一点,实际上是这样的:
if(m>0) //{}
{ if(n>2)
System.out.println("A");
else
System.out.println("B");
}
可以把if(m>0)的大括号拿掉,再把注释去掉,打印的就是A了,这样就比较好理解了
作者:
李志群
时间:
2012-7-12 22:09
程序思想:
这个程序里面 第一个 if和else是一整条语句的
if首先执行 判断 结果为false 执行离他最近的一条语句 if(n>2)没有执行。
而执行到下面的 else语句的时候 没有与之配对的if语句 所以 没有执行
这到题目答案是 可以编译通过 但是没有结果
class Demo2
{
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-7-12 22:16
本帖最后由 陆强强 于 2012-7-12 22:23 编辑
int m=0,n=3;
if(m>0) //这里的if省略了else,if不一定非要和else配对
if(n>2)
System.out.println("A");
else//说到底是这个else和哪个If配对的问题,最后结果来看是里面的if的
System.out.println("B");
所以说if和else配对是从里面向外面配对的
作者:
孙新强
时间:
2012-7-12 22:17
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");
}
}
把程序这样改一下改一下, 给上面的程序对比一下,就应该明白了吧。
其实这就是 if....else语句问题,if和else配对,遵循的是就进原则
作者:
苑占丽
时间:
2012-7-12 22:18
{
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");
}
}这个是楼主的源代码,if else语句你并没有加大括号,他相当于一下我写的这个代码
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所以并没有输出结果
}
所以,如果想达到的输出结果的目的,请看下面的代码
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");
}
}
}
}此时会输出B.希望对你有所帮助。
作者:
韩伟
时间:
2012-7-12 22:23
高手分析一下,谢谢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语句,该语句没有用{ }标记if的作用域,
所以else默认为是紧跟着if(n>2)的,由于第一个if(m>0)不满足条件,所以if(你》2)不会执行,那么跟他配对的else也不会执行。
作者:
杨敏
时间:
2012-7-12 22:34
按照楼主的代码书写格式,实际上你是写了一个if else语句,if(m>0)和else是一整句,在这个语句当中又添加了一个if(n>2)语句对if(m>0)d情况进行进一步条件判断。
calss 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-7-13 16:14
else根据就近原则跟临近的一个if配对,最好养成个写代码的好习惯,缩进好了很好分辨的,myeclipse里面有快捷键ctrl+shift+f会自动缩进好,格式化输出的,有图,有真相
1.png
(7.23 KB, 下载次数: 45)
下载附件
2012-7-13 16:14 上传
2.png
(4.92 KB, 下载次数: 39)
下载附件
2012-7-13 16:14 上传
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2