(一)循环嵌套
1.for可以替换成while循环
2.循环的嵌套可以有多个,数量不限。
3.里外层循环执行的次数不相同。
代码如下
object Base31 {
def main(args: Array[String]): Unit = {
/// 多重循环,循环里面还有循环
var n = 0
for(i <- 1 to 10){ // 10
println(i) // 执行几次? 10
for(j <- 5 to 20){ // 16
for(k <- 1 to 10) {
n += 1
println(n, k, i, j) // 会执行几次?10*16*10
}
}
}
// while(){
// def main28(){
// while(){
// while(){
//
// }
// }
// }
// }
}
}
(二)案例
编写代码打印输出如下图形:
1
22
333
4444
55555
object Base32 {
def main(args: Array[String]): Unit = {
//1. println("1")
// println("22")
// println("333")
// println("4444")
// println()
// println()
//2. for(i <- 1 to 5){ //控制有几行
// for(j <- 1 to 5){ //控制具体每一行上的内容
// print(i) //不换行
// }
// print() // 换行
// }
for (i <- 1 to 5) {
for (j <- 1 to i) {
print(i)
}
println()
}
}
}
结果
如何输出乘法口诀表
按1,3,5... 这个格式来输出,这就涉及到步长
object Base33 {
def main(args: Array[String]): Unit = {
for (i <- 1 to 9) { // 行
for (j <- 1 to i) { // 具体一行上的内容
// print(s"${j}×${i}=${i*j} ")
// %d 是表示占位符,这儿要填入一个整数
// %-4d 表示一个占位符,这儿要填入一个整数,并且:一共四位,左对齐
// j 填入第一个 %d
// i 填入第二个 %d
// i*j的结果,填入 %-4d
printf("%d×%d=%-4d", j, i, i * j)
}
println() // 换行
}
}
}
结果
循环的白鸡百钱问题
鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
翻译成现代语言:
公鸡(鸡翁)1只,价格5钱;
母鸡(鸡母)1只,价格3钱;
小鸡(鸡雏)3只,价格1钱(即1钱买3只小鸡);
用100钱买100只鸡,问公鸡、母鸡、小鸡各有多少只?
object Base34 {
def main(args: Array[String]): Unit = {
var k = 0
for(gj <- 0 to 100){
for(mj <- 0 to 100){
var xj = 100 - gj - mj
if(xj >= 0 && xj %3 ==0){ // 小鸡的数量不能为负且是3的倍数
if(gj*5 + mj*3 + xj/3 == 100){ // 如果合计是100元
k += 1
println(k, gj, mj, xj)
}
}
}
}
}
}
结果如下