嵌套循环

41 阅读2分钟

for 循环的嵌套

1.for可以替换成while循环

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

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

打印五行数字图形

scss
 体验AI代码助手
 代码解读
复制代码
object test25 {
  def main(args: Array[String]): Unit = {
    for (i <- 1 to 5){ //行,一共有五行
      for (j <-1 to i){ //具体一行中输出什么内容
        print(i)
      }
      println()
    }
    println()
    for (i <- 1 to 5){ //行,一共有五行
      for (j <-i to 5){ //具体一行中输出什么内容
        print(i)
      }
      println()
    }
  }
}

百鸡百钱问题

scss
 体验AI代码助手
 代码解读
复制代码
object test26 {
  def main(args: Array[String]): Unit = {
//    假设 公鸡 x
//        母鸡 y
//        小鸡 z
//
//    5x+3y+z/3=100(1)
//    x+y+z=100(2)
//
//    暴力求解
//    0<= x <=100
//    0<= y <=100
//    0<= z <=100
//
//    x,y,z ->(0,0,100) 代入验算(1) 是否成立
//      x,y,z ->(0,1,99) 代入验算(1) 是否成立
//      x,y,z ->(0,2,98) 代入验算(1) 是否成立
//      x,y,z ->(0,3,97) 代入验算(1) 是否成立
    for(x <- 0 to 20){
      for (y <- 0 to 33){
        var z=100-x-y
        if(z%3==0 && 5*x + 3*y + z/3 ==100){
          println(x,y,z)
        }
      }
    }
  }

}

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

2. 再观察每行的结构。

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

scss
 体验AI代码助手
 代码解读
复制代码
object test27 {
  def main(args: Array[String]): Unit = {
    for(i <- 1 to 9){
      for(j <- 1 to i){
        //println(s"${j}${i}=${i*j} ")
        printf("%d×%d=%-3d",j,i,i*j)
        // %d 表示一个占位符,表示会以整数的格式输出对应的值。
        // %3d 表示一个占位符,表示会以整数的格式输出对应的值,这是数字占3个字符的宽度,左对齐。

      }
      println()
    }
  }

}