A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梁健 黑马帝   /  2011-12-11 20:00  /  4007 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 l梁键 于 2011-12-12 09:33 编辑

for(int i=1;i<=7;i+=2){
   for(int kong=7;kong>i-1;kong--){
    System.out.print(" ");
   }
for(int xing=1;xing<=i;xing++){
    System.out.print("* ");
   }
         System.out.println();
  }这几个循环中的i的值是1吗?还是在循环中在变?如果在变i分别是多少?怎样知道他们分别循环多少次

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

6 个回复

倒序浏览
首先,不知代码贴完整没有,如果前面没有 i 的声明,那么第三个for循环里的 i 是不被通过的;
然后,前面连个for循环,i 是肯定在变的;怎么知道分别循环了多少次?——>第一个for循环很明显循环了4次啊(1,3,5,7),那么剩下输出的多少个空格减4就是第二个for循环循环的次数了。

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
李明 黑马帝 2011-12-11 20:36:37
藤椅
class Print
{
        public static void main(String []args)
        {       
                for(int i=1;i<=7;i+=2)//最外层循环
                {
                           for(int kong=7;kong>i-1;kong--)
                           {
                            System.out.print(" ");
                           }
                           for(int xing=1;xing<=i;xing++)
                           {
                            System.out.print("* ");
                           }
                        System.out.println();
                }
        }
}
/*这几个循环中的i的值是1吗?还是在循环中在变? i是控制变量肯定一直在变啊
如果在变i分别是多少? 分别是1,3,5,7,最外层循环4次
怎样知道他们分别循环多少次?外层循环次数*内层循环次数就是总的循环次数啊。
内层的循环次数随i的值变化,先要求和。
打印结果:
        *
     * * *
   * * * * *
* * * * * * *


*/

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 benbenqi 于 2011-12-11 20:51 编辑
  1. class ForTest
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 for(int i=1;i<=7;i+=2)     //i作用域开始
  6.                 {
  7.                         for(int kong=7;kong>i-1;kong--)  //kong作用域
  8.                         {
  9.                                         System.out.print(" ");
  10.                         }                                //kong结束
  11.                         for(int xing=1;xing<=i;xing++)   //xing作用域
  12.                         {
  13.                                 System.out.print("* ");
  14.                         }                         //xing结束
  15.                         System.out.println();
  16.                 }    //i结束
  17.         }
  18. }
复制代码
当你i = 1 时,(1)进入内部for循环,当第一个内部for循环结束,然后在进入第二个内部for循环;
当循环结束 i=3 重复做(1)步骤;
然后i=5重复做(1)步骤;
现在i=7还是满足i<=7,重复做(1)步骤;
然后i变成9,9<= 7不满足 循环结束

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
建议楼主去调试,一步步运行下,那样你会看到i kong xing这几个变量的变化,而且能看到程序一步步怎么走的。。我现在一直在dos中编译运行,具体用哪个命令 不清楚。。。之前用C语言做过类似的程序调试来,这样很容易让你理解。。。
回复 使用道具 举报
本帖最后由 ◇半度微凉 于 2011-12-11 21:28 编辑

首先 i 的值肯定不会一直是1,它是一直变化的!我在Eclipse里运行了一下,下面是我运行的代码,代码里写了注释,包括 i 在循环过程中的变化,外层循环和内层两个循环的循环次数!你自己看一下吧!
public static void main(String[] args) {
                // TODO Auto-generated method stub
        int count=0;
        int count1=0;
        int count2=0;
                for(int i=1;i<=7;i+=2){
                           for(int kong=7;kong>i-1;kong--){
                                   count++;//累加器(计数器) 每循环一次,count自加1,所以循环结束后count的值就是该循环的次数
                            System.out.print(" ");                            
                           }       
                          
                          System.out.print("i此时为"+i);//i的取值在整个循环过程中的变化
                          
                        for(int xing=1;xing<=i;xing++){
                            System.out.print("* ");
                            count1++;
                           }
                       
                            System.out.println();//换行
                            
                count2++;                                  
        }
                System.out.println("第一个for循环共循环了"+count+"次");
            System.out.println("第二个for循环共循环了"+count1+"次");
            System.out.println("外层循环共循环了"+count2+"次");
        }

下图是我运行后的结果:

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马