scala的多重循环

188 阅读1分钟

基本使用

for(i <- 1 to 5){
  println(i)  //这句话会输出5次
  for(j <- 1 to 10){
    println(i,j)  //这句话会输出50次
  }
}

练习题

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

屏幕截图 2025-09-28 151917.png

for(i <- 1 to 5){ //行,一共5行
  for(j <- 1 to i){  //具体一行中输入什么内容
    print(i)
  }
  println()  //换行
}

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

屏幕截图 2025-09-28 152046.png

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

案例3:百鸡百钱问题:用100钱买三种鸡共100只,公鸡5钱一只,母鸡3钱一只,小鸡三钱1元

1. 判断是否满足100钱
2. 判断小鸡数是否是3的整数倍

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){    //小鸡数量是3的整数倍和满足100钱两个条件
      println(x,y,z)
    }
  }
}

案例4:打印九九乘法表

for(i <- 1 to 9){
  for(j <- 1 to i){
    printf("%d×%d=%-3d", j, i, i*j)
    //%d  表示一个占位符,表示会以整数的格式输出对应的值
    //%3d 表示一个占位符,表示会以整数的格式输出对应的值,这是数字占3个字符的宽度,左对齐
  }
  println()
}