Scala内建控制-多重循环

67 阅读1分钟

一、多重循环的基本使用

格式:

for ( 循环变量 <- 数据集) {  
  for(){  
    for(){  
    }  
  }  
}

说明:

1.for可以替换成while循环。

2.循环的嵌套可以有多个,数量不限。

3.里外层循环执行的次数不相同。

代码示例:

for (i <- 1 to 5){  
  println(i)  
  for(j <- 10 to 15){  
     print(i, j)  
  }  
}

二、输出特殊图形

编写代码打印输出如下图形:

1

22

333

4444

55555

代码如下:

for(i <- 1 to 5){
  for(j <- 1 to i){
    print(i)
  }
  println()  // 换行
}

运行结果如图:

屏幕截图 2025-09-30 104952.png

三、打印乘法口诀表

思路:

1. 先观察每个式子的结构

2. 再观察每行的结构。

3. 使用双层for循环,写出一个矩形结构。

代码如下:

for(i <- 1 to 9){
  for(j <- 1 to i){
    printf("%d*%d=%-4d",j,i,i*j)
  }
  println()
}

运行乘法表:

屏幕截图 2025-09-30 105120.png

  • %d:占位符,会输出一个整数
  • %-4d:占位符,会输出一个整数,一共占据4个字符空间的大小,左对齐!
  • %4d:占位符,会输出一个整数,一共占据4个字符的空间大小,右对齐!

四、百钱百鸡问题

步骤:

1. 通过两层for循环,列出所有组合。这儿有两个变量:公鸡数量,母鸡数量;小鸡数量用100减出即可。

2. 判断是否满足100钱

3. 判断小鸡数是否是3的整数倍。

  • 设公鸡 x, 母鸡 y 只

代码如下:

var k = 0
for(x <- 0 to 20){
  for(y <- 0 to 33){
    val z = 100 - x - y
    // 代入(1)
    if(5*x + 3*y + z/3 == 100){
      k += 1
      println(k, x, y, z)
    }
  }
}

运行:

屏幕截图 2025-09-30 105217.png