多重循环(嵌套循环)
格式:
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)
}
}
}
}
}