多重循环

53 阅读1分钟

多重循环的基本使用

格式

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

说明:

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

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

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

代码示例:

var k = 0
for(i <- 2 to 10) { // 外层循环
  println(i)
  for (j <- 4 to 20) { // 内层循环
    k = k + 1
    println(k,i, j)
  }
}

案例

案例1

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

1

22

333

4444

55555

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

案例2

打印乘法口诀表

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

    /*
    * %d:占位符,会输出一个整数
    * %-4d:占位符,会输出一个整数,一共占据4个字符的空间大小,左对齐
    * %4d:占位符,会输出一个整数,一共占据4个字符的空间大小,右对齐
     */
  }
  println() // 换行
}

案例3

百鸡百钱问题

设公鸡x,母鸡y,小鸡100-x-y

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