再谈循环嵌套

**************循环嵌套**********************************

循环嵌套,就是循环之中还有循环,可以形象的理解为大圈套小圈。例如下面循环:

class Demo
{
<span style="white-space:pre">	</span>public static void main(String[] args)
<span style="white-space:pre">	</span>{
<span style="white-space:pre">		</span>for (int x=0; x<3; x++)       //外循环3次
<span style="white-space:pre">		</span>{
<span style="white-space:pre">			</span>for (int y=0;y<4;y++)       //内循环4次
<span style="white-space:pre">			</span>{
<span style="white-space:pre">				</span>System.out.print("*");    
<span style="white-space:pre">			</span>}
<span style="white-space:pre">		</span>System.out.println();      //换行
<span style="white-space:pre">		</span>}
<span style="white-space:pre">	</span>}
}

这个程序打印结果如下:

****

****

****       从中可以发现,外循环控制行数,内循环控制每行元素个数。

思考,这样的三角形应该如何打印?

*****

****

***

**

*        我们可以发现,总共五行,所以外循环必定是for (int x=0; x<5; x++)       //外循环5次,但是每行中元素个数不同,应该如何?

我们知道,变量的作用就是作为一个容器来存储不确定的量,所以我们可以定义一个变量来记录元素个数,但是这里不用额外定义,让y充当变量,让y随着x的变化而变化就可以了。简写:

for (int x=0; x<5; x++)
{
<span style="white-space:pre">	</span>for (int y=x; y<5; y++);     //初始化值y=x
<span style="white-space:pre">	</span>{
<span style="white-space:pre">		</span>System.out.print("*") ;
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>System.out.println();
}    

这样打印出来就是以上结果了。

现在,我们想想如果打印尖向上的应该怎么做?

*

**

***

****

*****

简化代码:

for (int x=0; x<5; x++)    //控制行数,行数固定为5行
{
for (int y=0; y<=x ; y++)    //改变y,让y随x变化
{
System.out.print("*");
}
System.out.println();
}

好,代码写完了现在总结一下规律。先来看for循环格式:

for(初始化值;循环条件;循环后的操作表达式),通过以上我们可以看出一个不是规律的规律,尖向上,可以改变条件,让条件随着外循环变化,初始化值固定;尖向下,可以初始化值,让初始化值随着外循环变化而变化,循环条件固定。

现在,我们再来打印如下样式:

1

12

123

1234

12345

行数固定,外循环为 for( int x=1; x<5; x++) ;尖向上,改变内循环循环条件,为 for (int y=1; y<=x; y++),组合如下:

for (int x=1; x<=5; x++)
{
for (int y=1; y<=x; y++)
{
System.out.print(y);
}
System.out.println();
}

完美结束。下面再来一发很经典的打印九九乘法表;

乘法表字太多了,从网上搜一张图片:

啊哈哈

依旧发现,固定行数为9,所以外循环为 for (int x=1; x<=9; x++) ,尖向上,内循环改变循环条件,for (int y=1; y<=x; y++),组合如下:

for (int x=1; x<=9; x++)
{
for (y=1; y<=x; y++)
{
System.out.print(y+"*"+x+"="+y*x+"   ");
}
System.out.println();
}

思考:如果我想打印三三乘法口诀表呢?如果我想打印五五乘法口诀呢?如果我想打印nn口诀表呢?难道我还要每次都要重新写一遍代码,把x弄成3、5、n吗?

我们可以把这个函数封装起来,定义一个参数,用于接收像3,5,n这样的数字,实现函数调用而不是每次重写一遍代码,封装如下:

public static void getkoujue(int num)
{ 
for (int x=1; x<=num; x++)
{
for (y=1; y<=x; y++)
{
System.out.print(y+"*"+x+"="+y*x+"   ");
}
System.out.println();
}
}

看起来也是蛮简单的样子。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值