鱼cfans 发表于 2013-6-14 18:09:22

并列的内嵌for循环

public class c3_16
{
public static void main(String[] args)
{
for (int i=1;i<=10;i++)//外层for循环
{
for(int j=1;j<=11-i;j++;) //内嵌循环
System.out.print("")//内嵌for循环的循环体
for(int j=1;j<=i;j++)//并列的内嵌for循环
{ if(i>=10)             System.out.print(+i+"");
else                        System.out.print(+i+"");
}
System.out.println("");
}
}
}
小弟刚开始学java,上程序的运行结果已经知道了,这个并列内嵌循环实在不明白,到底是怎么实现的,百度过一些资料,内嵌先执行内部循环,后面就完全摸不着头脑了。求教!:'(

fanki 发表于 2013-6-14 18:09:23

我对java不太熟,不过用都略懂一点。
这是代码注释:

public class c3_16
{
        public static void main(String[] args)
        {
                for (int i=1;i<=10;i++)                        //外层for循环
                {
                        //1.一开始i = 1进去执行
                        //2.j = 1 到 j = 10一直打印空格(即十个空格)
                        for(int j=1;j<=11-i;j++;)        //内嵌循环
                                System.out.print("");        //内嵌for循环的循环体
                        //3.再j = 1开始,因为i = 1,j只做一次
                        for(int j=1;j<=i;j++)                //并列的内嵌for循环
                        {
                                //4.无聊如何都打印i的值和空格。
                                if(i>=10)            
                                        System.out.print(+i+"");
                                else                        
                                        System.out.print(+i+"");
                        }
                        //5.再打一个换行
                        System.out.println("");
                        //做完换行后,i++,i = 2还是小于10,进行第二次循环,从上面的1.开始,i的值变了,代进去就知道。
                        //一直循环以上操作直到i>10
                }
        }
}

伪代码:
//第一个for,i控制行数
for ( int i = 1; i <= 10; i++ )
{
        //控制打出的空格数,逐个减少,一开始10个,没行减少一个。
        for(int j = 1; j <= 11 - i; j++ )       
        //控制打出多少个 数字,每行应该打印i个数,就是第n行就打印n个数
        for( j = 1; j <= i; j++ )
        //换行
        printf( "\n" );
}



第一个for包括第二个for和第三个for,第二个for和第三个for系分开的,做完第二个for,再执行第三个for。

我用C语言写了一下,其实都差不多,你看看:
#include "stdio.h"
int main(int argc, char* argv[])
{
        //第一个for,i控制行数
        for ( int i = 1; i <= 10; i++ )                                                //外层for循环
        {
                //控制打出的空格数,逐个减少,一开始10个,没行减少一个。
                for(int j = 1; j <= 11 - i; j++ )                                        //内嵌循环
                        printf(" ");                                                        //内嵌for循环的循环体
                //控制打出多少个 数字,每行应该打印i个数,就是第n行就打印n个数
                for( j = 1; j <= i; j++ )                                                //并列的内嵌for循环
                {
                        if( i >= 10 )            
                                printf( "%d ", i );                                     //等于打印函数
                        else                  
                                printf( "%d ", i );
                }
                //换行
                printf( "\n" );
        }
        return 0;
}


希望能帮到你。一起学习,加油加油!!{:7_155:}

wwwxinyu1990 发表于 2013-6-15 07:56:23

是在打印九九乘法表吧……

鱼cfans 发表于 2013-6-17 23:01:10

fanki 发表于 2013-6-14 18:09 static/image/common/back.gif
我对java不太熟,不过用都略懂一点。
这是代码注释:



感谢,还是鱼c这里人有爱!

鱼cfans 发表于 2013-6-17 23:03:22

wwwxinyu1990 发表于 2013-6-15 07:56 static/image/common/back.gif
是在打印九九乘法表吧……

不是的。。九九乘法表正好是我习题大神能给个九九乘法表的java编程吗?{:5_92:}
感激不尽{:5_100:}

wwwxinyu1990 发表于 2013-6-18 08:52:30

鱼cfans 发表于 2013-6-17 23:03 static/image/common/back.gif
不是的。。九九乘法表正好是我习题大神能给个九九乘法表的java编程吗?
感激不尽

直接给你代码不好,还是自己努力试试吧。还是用双层嵌套循环来做,先尝试下吧~

鱼cfans 发表于 2013-6-18 20:58:09

wwwxinyu1990 发表于 2013-6-18 08:52 static/image/common/back.gif
直接给你代码不好,还是自己努力试试吧。还是用双层嵌套循环来做,先尝试下吧~

public class jjcfb
{
        public static void main(String args[])
        {
                int i,c;
        for(i=1;i<=9;i++)
        {for(int j=1;j<=i;j++)
       c=i*j;
        System.out.print(c);       
        }
        System.out.println("");
        }

}
这是写的代码 你看看那里不行。。求指教{:5_107:}

wwwxinyu1990 发表于 2013-6-18 22:00:25

鱼cfans 发表于 2013-6-18 20:58 static/image/common/back.gif
public class jjcfb
{
        public static void main(String args[])


循环条件对了,不出效果是你的循环体没有使用正确。System.out.print(i+"*"+j+"="+(i*j)+"\t");这样输出不就是表示几乘几等于几的效果吗?还有就是要注意代码的规范性(类名使用驼峰命名法,还有缩进)。

鱼cfans 发表于 2013-6-19 16:41:28

wwwxinyu1990 发表于 2013-6-18 22:00 static/image/common/back.gif
循环条件对了,不出效果是你的循环体没有使用正确。System.out.print(i+"*"+j+"="+(i*j)+"\t");这样输出不 ...

嗯 。。解决了
我还是很菜的。。小问题就请教你吧

wwwxinyu1990 发表于 2013-6-19 16:56:29

鱼cfans 发表于 2013-6-19 16:41 static/image/common/back.gif
嗯 。。解决了
我还是很菜的。。小问题就请教你吧

呵呵……
页: [1]
查看完整版本: 并列的内嵌for循环