黑马程序员技术交流社区

标题: 一个关于for循环的小练习,请大虾们分析一下? [打印本页]

作者: 刘学宾    时间: 2012-11-11 20:28
标题: 一个关于for循环的小练习,请大虾们分析一下?
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-11-11 20:32
应该没结果吧.

作者: 种生祥    时间: 2012-11-11 20:34
                if(m>0)

                        if(n>2)
                                System.out.println("A");        
                else//你这里跟第一个if对齐,吃果果的诱导!!
                        System.out.println("B");
作者: 葛旭东    时间: 2012-11-11 20:51
else 和它上面最近的 if 配对。

相当于:
if(m>0)
       {
          if(n>2)
                  System.out.println("A");        
          else
                  System.out.println("B");
        }
作者: 张综    时间: 2012-11-11 20:55
class Demo
{      //主函数保证代码独立运行,是程序的入口
        public static void main(String[] args)
        {
                int m=0,n=3;//定义两个变量m,n,并给他们分别赋值。m=0,n=3,然后程序继续向下执行,
                if(m>0)//当执行到这里的时候,执行判断语句,如果满足,执行if下面的语句,否则,不执行if下面跟着的语句。在这里不满足条件。所以不执行下面跟着的语句。

                        if(n>2)
                                System.out.println("A");        
                else
                        System.out.println("B");
        }
}
因为两个if都没有用大括号注明自己的区间,所以这里的else,是和他上面离他最近的if是配套的。构成if,else语句。所以也不执行。所以这条代码什么都不打印。
作者: 张综    时间: 2012-11-11 20:56
class Demo
{      //主函数保证代码独立运行,是程序的入口
        public static void main(String[] args)
        {
                int m=0,n=3;//定义两个变量m,n,并给他们分别赋值。m=0,n=3,然后程序继续向下执行,
                if(m>0)//当执行到这里的时候,执行判断语句,如果满足,执行if下面的语句,否则,不执行if下面跟着的语句。在这里不满足条件。所以不执行下面跟着的语句。

                        if(n>2)
                                System.out.println("A");        
                else
                        System.out.println("B");
        }
}
因为两个if都没有用大括号注明自己的区间,所以这里的else,是和他上面离他最近的if是配套的。构成if,else语句。所以也不执行。所以这条代码什么都不打印。
作者: 郑丹丹    时间: 2012-11-11 22:48
什么都不打印
因为if(n>2)
                                System.out.println("A");        
                else
                        System.out.println("B");
是在if(m>0)循环中的;而m=0,程序直接跳转到结尾处。
作者: 朝花夕拾    时间: 2012-11-12 00:19
if判断如果不满足,就不会执行跟着它的第一句话,所以在判断m>0不满足时,就不再执行第二个if语句,就会直接跳至大括号,结束程序,没有输出结果!!!
作者: 杜正冬    时间: 2012-11-12 00:44

int m=0,n=3;
if(m>0){//不成立
    。。。
}else
System.out.println("第一个判断都没通过 能打出什么来,你小子很坑!!");
作者: 化小东    时间: 2012-11-12 10:18
可以编译,但是没结果
else会和它最近的配对,第一个if语句没有和它配对的输出语句,所以没有输出结果。
class Demo
{
        public static void main(String[] args)
        {
                int m=0,n=3;
                if(m>0)//m=0不满足条件,下面的语句不再执行
                        if(n>2)
                                System.out.println("A");        
                         else
                        System.out.println("B");
                  System.out.print("C")  ;//要想看到结果,就在这里再来一句,与第一个if相匹配,那么输出的结果就是c了
        }
}

作者: 黑马周磊    时间: 2012-11-12 10:52
class Demo
{
         public static void main(String[] args)
         {
                 int m=0,n=3;//你定义m的时候,把m初始化为0值,
                 if(m>0)        //当你使用if判断m>0的时候,条件是不成立的,所以你后面嵌套进去的if(n>2)……这些语句是不会执行的。

                        if(n>2)
                                 System.out.println("A");        
                else
                         System.out.println("B");
         }
}
作者: 李贺晓    时间: 2012-11-12 11: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");
        }
}这个程序没有输出结果的

class Demo12
{
        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
在使用if else语句时,如果if后面不只有一句话的话,最好加个{}来区分开,要不很容易造成误解的

作者: 刘菲    时间: 2012-11-12 20:09
默认情况下if是与离它最近的else匹配,
本程序中如果想要else和第一个if匹配,则只需要加个{}说明一下后面的语句是第一个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");
         }
}
打印结果为:B
希望能够帮到你!
作者: jerry2627    时间: 2012-11-12 20:24
我不会告诉你结果的,因为---------你懂得---           根本就没哦

作者: 蔡兆军    时间: 2012-11-12 20:38
第一个if 没有对应的 else,结果就是啥都没有!
作者: 7℃洋    时间: 2012-11-12 21:38
                if(n>2)
                                 System.out.println("A");        
                else
                         System.out.println("B");
这部分代码相当于是一条执行语句!
if(m>0)
条件不满足,所以程序直接跳转到最后一句!因此没有结果!

作者: 一身顺利    时间: 2012-11-12 22:57
都不打印吧,因为else离第二个if最近。当然不能相当然的,去手敲下,看看结果。其实写代码,把括号加起来怎么了,加个括号就影响程序的运行效率吗?
作者: 殷士剑    时间: 2012-11-12 23:42
if 属于单条语句,不管你是if  还是 if ... else  还是 if  .. else if  .. else  每次每个if只会执行出来一个结果。
另一个知识点是 else  与最接近它的那个 if 相匹配。
如果有想更好了解可以看看下面这个例子:
分辨:
n = 10;
if( n > 1)
   System.out.println(n);
if( n > 2 )
   System.out.println( n + 1 );

if( n > 3)                                       |
    System.out.println( n + 2);      |整体
else                                               |
   System.out.println( n + 3);       |

结果是:
10
11
12
13


作者: 张钧杰    时间: 2012-11-13 00:01
本帖最后由 张钧杰 于 2012-11-13 00:08 编辑

class Demo
{
         public static void main(String[] args)
         {
                 int m=0,n=3;//你定义m的时候,把m初始化为0值,
                 if(m>0) {      //当你使用if判断m>0的时候,条件是不成立的,所以你后面嵌套进去的if(n>2)……这些语句是不会执行的。

                        if(n>2)
                                  System.out.println("A");        
                        else
                                  System.out.println("B");
                      }
         }
}
应该这样写吧。m>2返回的是false,下面的红括号里的。都不会执行!
作者: 深井看海    时间: 2012-11-13 01:07
//我们用打印输出语句可以做程序的判断,你这并不是一个什么循环,而是一个无意义的语句

class Demo{
        public static void main(String[] args){
                int m=0,n=3;
                if(m>0)
                System.out.println("C");//如果在这加上一句话,会打印输出C,去掉这语句由于if后面没有任何的分号,而if里面的条件又是没有意义的,就说明紧跟if后面的语句都是无意义的
                if(n>2)
                        System.out.println("A");        
                else
                        System.out.println("B");
                System.out.println("D");//如果不加上面那据输出,直接写上最下面输出这语句会打印D,也能进一步说明你上面的操作一切都是无意义的
        }
}

作者: 聽聽我dē❤    时间: 2012-11-13 09:11
当第一个if条件和第二个if条件成立时,才执行System.out.println("A");这句,但是第一个if条件都不成立,所以后面的也就不用看了,直接执行else后的System.out.println("B");语句就行了。
作者: 聽聽我dē❤    时间: 2012-11-13 09:11
这是for循环吗???
作者: 被遗弃者    时间: 2012-11-13 09:28
什么都不打印:
class Demo
{
        public static void main(String[] args)
        {
                int m=0,n=3;
                if(m>0)//由于m=0,此时的判断条件是如果m>0,不满足,所以程序不会执行以下代码段
                        if(n>2)
                                System.out.println("A");        
                         else//此处的else是默认找上面最近的一个if
                        System.out.println("B");
                       }
}

作者: 侯凯斌    时间: 2012-11-15 11:20
什么都不可能打印,第一个if跟下面的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-11-15 19:25
本帖最后由 李培根 于 2012-11-15 19:32 编辑

class Demo
{
         public static void main(String[] args)
         {
                 int m=0,n=3;
                 if(m>0){ //这里不满足条件,直接跳转到1处

                      if(n>2)
                                System.out.println("A");        
                      else//这里其实根本就没有读到 m>0 n<=2的话读这里
                                System.out.println("B");
                      }1直接跳转到此处,中间的代码不读
         }
}


}

不小心发重复了。。。。
作者: 李培根    时间: 2012-11-15 19:25
本帖最后由 李培根 于 2012-11-15 19:28 编辑

class Demo
{
         public static void main(String[] args)
         {
                 int m=0,n=3;
                 if(m>0){ //这里不满足条件,直接跳转到1处

                      if(n>2)
                                System.out.println("A");        
                      else//这里其实根本就没有读到 m>0 n<=2的话读这里
                                System.out.println("B");
                      }1直接跳转到此处,中间的代码不读
         }
}


作者: 奚华    时间: 2012-11-16 13:25
什么都不打印!
作者: 森仔    时间: 2012-11-16 14:13
{:soso_e134:}{:soso_e134:}{:soso_e134:}{:soso_e134:}{:soso_e134:}
这是for循环(⊙_⊙)?
作者: 郝少普    时间: 2012-11-17 14:55
没有结果,两个 if 语句都没有用大括号括起来
可以编译,但是没结果

作者: 潘天功    时间: 2012-11-18 12:43
没有输出任何结果。
原因是if(m>0)这个条件不成立,所以下面的代码是不会执行的。那个else是属于第二个if判断的,因为else会根据就近原则来和if匹配。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2