Scala内建控制-多重循环

54 阅读2分钟

多重循环(嵌套循环)

格式:
for ( 循环变量 <- 数据集) {
  for(){
    for(){
    }
  }
}
案例1:1to5的循环
object day24 {
  def main(args: Array[String]): Unit = {
    var k=0
    for(i<-1 to 5){//外层循环
      println(i)// 输出5次,由循环变量i的值决定
      for(j<-10 to 15){//内层循环
        //j输出六次
        k=k+1
        println(k,i,j)//i,j输出30次,由j决定
      }
    }
  }
}
案例2:打印特殊图形
object day25 {
  def main(args: Array[String]): Unit = {
    for(i<-1 to 5){
      for(j <- 1 to i){
        print(i)
      }
      println()
    }
  }
}
案例3:输出乘法口诀表
object day26 {
  def main(args: Array[String]): Unit = {
    for(i<- 1 to 9){
      for(j<- 1 to i) {
        //printf(s"${j}×${i}=${i*j}")
        printf("%d×%d=%-4d",j,i,i*j)
      }
      println()
    }
  }
}
/*
   %d:占位符,会输出一个整数
   %-4d:占位符,会输出一个整数,一共占据4个字符的空间大小,左对齐
   %4d:占位符,会输出一个整数,一共占据4个字符的空间大小,右对齐
      */ 
案例三:百鸡百钱

公鸡(鸡翁)1只,价格5钱;母鸡(鸡母)1只,价格(3钱); 小鸡(鸡雏)3只,价格1钱(即1钱买三只小鸡); 用100钱买100只鸡,问公鸡,母鸡,小鸡各有多少只

示例代码:

object day27 {
  def main(args: Array[String]): Unit = {
    //百鸡百钱
    /*
      设公鸡 x,母鸡 y,小鸡是100-x-y
      同时0<=x <=20,0<=y<=33
        5x+3y=(100-x-y)/3=100 (1)

        暴力求解:
        1.(0,0,100)代入(1)看看是否成立
        2.(0,1,99)代入(1)看看是否成立
        ...
        34.(0,33,37)代入(1)看看是否成立
     */
    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)
        }
      }
    }
  }
}