四、多重循环
在一个循环语句内部再嵌套一个或多个循环,称为多重循环/嵌套循环。while、do-while与for循环可以任意嵌套,可以嵌套任意多层。一般工作中多见的就是两层。
4.1 多重循环
打印矩形
思路: 大循环:输出四行
循环体:
1.一行20个空格(小循环)
2.输出一行10个(小循环)
3.换行
public
总结:一定要明白多重循环的执行过程
i=1
k = 1 2 3 4 5 6 7 8 9 10......20
j = 1 2 3 4.....10
i=2
k = 1 2 3 4 5 6 7 8 9 10......20
j = 1 2 3 4.....10
i=3
k = 1 2 3 4 5 6 7 8 9 10......20
j = 1 2 3 4.....10
i=4
k = 1 2 3 4 5 6 7 8 9 10......20
j = 1 2 3 4.....10
打印平行四边形
public
打印三角形
public
打印菱形
public
百钱买百鸡:
公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。
思路1:三重循环
设公鸡i只,母鸡j只,小鸡k值
条件1:百钱 5*i +3*j +k/3 = 100
条件2:百鸡 i+j+k = 100
条件3:小鸡数必须是3的倍数 k%3==0
三重循环的执行过程
i=1
j=1 k=1,2,3,4.....100
j=2 k=1,2,3,4.....100
j=3 k=1,2,3,4.....100
...
j=33 k=1,2,3,4.....100
i=2
j=1 k=1,2,3,4.....100
j=2 k=1,2,3,4.....100
j=3 k=1,2,3,4.....100
...
j=33 k=1,2,3,4.....100
...
i=21
循环执行了多少次:20*33*100=66000
思路2:二重循环
设公鸡i只,母鸡j只,小鸡100-i-j
循环执行了多少次 20*33*2
public
4.2 多重循环下的控制语句
功能:有5家衣服专卖店,每家最多购买3件。用户可以选择离开,可以买衣服。最后打印总共买了几件衣服
技能:
1.多重循环
外层循环 5家专卖店 内层循环 每家3件衣服
2.多重循环中使用break
每家(最多)购买3件
迭代1:有5家衣服专卖店,每家购买3件
public
迭代2:有5家衣服专卖店,每家最多购买3件
import
迭代3:最多5家衣服专卖店,每家最多购买3件
import
goto关键字很早就在程序设计语言中出现。尽管goto仍是Java的一个保留字,但并未在Java语言中得到正式使用;Java没有goto语句。然而,在break和continue这两个关键字的身上,我们仍然能看出一些goto的影子---带标签的break和continue。
“标签”是指后面跟一个冒号的标识符,例如:“label:”。对Java来说唯一用到标签的地方是在循环语句之前。而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于break和continue关键字通常只中断当前循环,但若随同标签使用,它们就会中断到存在标签的地方。
在 “goto有害”论中,最有问题的就是标签,而非goto, 随着标签在一个程序里数量的增多,产生错误的机会也越来越多。 但Java标签不会造成这方面的问题,因为它们的活动场所已被限死,不可通过特别的方式到处传递程序的控制权。由此也引出了一个有趣的问题:通过限制语句的能力,反而能使一项语言特性更加有用。
import
本章需掌握的技术
1. 使用多重循环实现九九乘法表
2. 使用多重循环打印矩形、平行四边形、三角形、菱形几何图形
3. 使用多重循环实现百钱买百鸡
4. 使用多重循环实现有5家衣服专卖店,每家最多购买3件。用户可以选择离开,可以买衣服。最后打印总共买了几件衣服