黑马程序员技术交流社区

标题: 关于for循环 [打印本页]

作者: 张金    时间: 2012-11-9 12:46
标题: 关于for循环
本帖最后由 张金 于 2012-11-9 13:50 编辑

public class Test22 {

        /**
         * @param args
         */
        public static void main(String[] args) {
                for (int x = 0; x < 5; x++) {
                        for (int y = x + 1; y < 5; y++) {
                                System.out.print("-");
                        }
                        for (int z = 0; z <= x; z++) {
                                System.out.print("* ");
                        }
                        System.out.println();
                }
               
System.out.println("------------------------");
        for (int a = 0; a < 5; a++) {
                        for (int b = 1; b <= a; b++) {
                                System.out.print("-");
                        }
                        for (int c = a; a < 5; c++) {
                                System.out.print("*");
                        }
                        System.out.println();
                }
System.out.println("----------------------------");
        }
}
在这个程序里,怎么就是运行完后,停不下来,把一个双层for循环注释掉,就可以停下来了,不知道是编译器的问题,还是程序那里没看明白。
作者: 宫明星    时间: 2012-11-9 13:05
本帖最后由 宫明星 于 2012-11-9 13:07 编辑
  1. class ForForTest
  2. {
  3.         public static void main(String[] args) {
  4.                 for (int x = 0; x < 5; x++) {
  5.                          for (int y = x + 1; y < 5; y++) {
  6.                                  System.out.print("-");
  7.                          }
  8.                          for (int z = 0; z <= x; z++) {
  9.                                  System.out.print("* ");
  10.                          }
  11.                          System.out.println();
  12.                  }
  13.                  
  14. System.out.println("------------------------");
  15.          for (int a = 0; a < 5; a++) {
  16.                          for (int b = 1; b <= a; b++) {
  17.                                  System.out.print("-");
  18.                          }
  19.                          for (int c = a; c < 5; c++) {
  20.                                  System.out.print("*");
  21.                          }
  22.                          System.out.println();
  23.                  }
  24. System.out.println("----------------------------");
  25.          }
  26. }
复制代码
改了一下给你,没问题了。
先运行了你的代码,发现第一个for循环打印了,那显然是第二个for循环出问题了,注释掉第二个,果然程序正常。
检查过程中调试了几下,整体逻辑没问题,不过一个地方写错了。
第二个for循环中,应该是int c = a; c < 5; c++。你写成了a<5,自然就死循环无限打印了

作者: 朱宏青    时间: 2012-11-9 13:08
  1. for (int c = a; a < 5; c++) {
  2.                                 System.out.print("*");
  3.                         }
复制代码
首先要说是,你这个程序没有运行完整,只运行了上面那部分,然后到我贴的这块的时候就成了死循环 自己看看是不是
作者: 李亚飞    时间: 2012-11-9 13:28
学习了……再次证明了细节的重要性,做程序马虎不得啊……




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