多重循环的基本使用
- 基本格式:
for ( 循环变量 <- 数据集) {
for(){
for(){
}
}
}
- 说明:
1.for可以替换成while循环。
2.循环的嵌套可以有多个,数量不限。
3.里外层循环执行的次数不相同。
例如1:
var k = 0
for (i <- 2 to 6){ //外层循环
println(i)
for(j <- 10 to 20){ //内层循环
k=k+1
println(k,i, j)
}
}
例如2:【讲解任务】编写代码打印输出如下图形:
1
22
333
4444
55555
代码为:
for (i <- 1 to 5){
for (j <- 1 to i){ //每层输出几个数字
print(i)
}
println() //换行
}
例如3:打印乘法口诀表
代码为:
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个字符的空间大小 右对齐!*/
例如4:百鸡百钱。
公鸡(鸡翁)1 只,价格 5 钱;
母鸡(鸡母)1 只,价格 3 钱;
小鸡(鸡雏)3 只,价格 1 钱(即 1 钱买 3 只小鸡);
用 100 钱买 100 只鸡,问公鸡、母鸡、小鸡各有多少只?
代码为:
/*
* 设公鸡x只 母鸡 y只 小鸡是 100 - x-y
* 即 0<= x<= 20 0 <= y <= 33
* */
var k =0
for (x <- 0 to 20){
for (y<- 0 to 33){ //每层输出几个数字
val z =100 - x - y
if (5*x + 3*y + z/3==100){
k +=1
println(k,x,y,z)
}
}
}