黑马程序员技术交流社区

标题: 对于这道题的答案不是很理解,求解 [打印本页]

作者: 仰天长啸    时间: 2015-3-23 11:31
标题: 对于这道题的答案不是很理解,求解
                class Example {
                  public static void main(String[] args){
                    int i=1,j=10;
                    do{
                      if(i++>--j) continue;
                    } while (i<5);
                    System.out.println("i="+i+",j="+j);
                  }
                }
                A. 打印输出 i=6,j=5
                B. 打印输出 i=5,j=5
                C. 打印输出 i=6,j=4
                D. 打印输出 i=5,j=6
                E. 打印输出 i=6,j=6
作者: 武维京    时间: 2015-3-23 12:21
  1. class Demo2
  2. {
  3.         public static void main(String[] args)
  4.         {  
  5.                 /*
  6.                 第一次 : 1>9  while(2<5);
  7.                         第二次 : 2>8  while(3<5);
  8.                                   3>7  while(4<5);
  9.                                           4>6  while(5<5)false;
  10.                                           所以 i=5;j=6;
  11.          */       
  12.                 int i=1,j=10;
  13.             do{
  14.                 if(i++>--j)
  15.                                   continue;
  16.                } while (i<5);
  17.        System.out.println("i="+i+",j="+j);
  18.         }
  19. }
复制代码

作者: wkz_crystal    时间: 2015-3-23 12:29
说在重点上了,我也没有想明白?一起关注答案吧……
作者: wkz_crystal    时间: 2015-3-23 12:37
武维京 发表于 2015-3-23 12:21

非常感谢,看了你的分析……突然明白了……
作者: 菜鸟小A    时间: 2015-3-23 12:38
当i=5的时候,循环才跳出,而此时循环已经经历了四次,所以j就自减了四次,故j=6
作者: thoris    时间: 2015-3-23 12:52
j++ 先判断在自增
++j  先自增再判断
作者: Kewin.java    时间: 2015-3-23 13:41
经过每次循环,i加1,j减1,第一次循环结果是2和9,第二次是3和8,第三次是4和7,第五次出来是5和6,这是i就不满足循环条件了,跳出循环,所以结果是5和6。
作者: 齐浩    时间: 2015-3-23 14:16
(i++>--j)  这个大于号是不是写错了,应该是小于号吧
作者: 胡宗钊    时间: 2015-3-23 16:35
因为是i++  所以是先获取i值,i值再自加,所以i是从1开始,--j是先对j自减在获取值,所以j是从9开始。到程序每次结束时,i值会加1,j值不变
作者: liyuehua    时间: 2015-3-23 21:36
++在变量前与变量后问题,++在变量后先运算在自增,++在变量前,先自增在运算




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