Scala中多重循环

44 阅读1分钟

(一)多重循环的使用

格式:

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

eg1: 1. println(i)会执行几次? 2. println(i,j)会执行几次?

for (i <- 1 to 5){  //外层循环

  println(i)  
  for(j <- 10 to 15){  //内层循环//
     print(i, j)  
  }  
}

解答1. println(i)会执行5次? 2. println(i,j)会执行30次?//5x6=30

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

1

22

333

4444

55555

解答

object bass24 {
  def main(args: Array[String]): Unit= {
    for (i <- 1 to 5) { // 外层循环
      for (j <- 1 to i) { // 每行输入几个数字
        print(i)
      }

      println() //换行
    }
  }
}

运行结果如下: image.png

eg3:运行一个九九乘法表

object bass30 {
  def main(args: Array[String]): Unit= {
    for (i <- 1 to 9) { // 外层循环
      for (j <- 1 to i) { // 每行输入几个数字
        printf("%d×%d=%-4d", j, i, i * j)

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

}

运行结果如下:

image.png

eg4:百鸡百钱问题

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

解答:

object bass31 {
  def main(args: Array[String]): Unit={
    //百鸡百钱

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

运行结果如下:

image.png

*完结撒花!!!! *