一、多重循环的基本知识
1.格式
for ( 循环变量 <- 数据集) {
for(){
for(){
}
}
}
说明:
1.for可以替换成while循环。
2.循环的嵌套可以有多个,数量不限。
3.里外层循环执行的次数不相同。
2.代码试验
object base27{
def main(args: Array[String]): Unit = {
// 多重循环
var k = 0
for (i<-0 to 5){ //外层循环
println(i) //输出6次? 他由循环变量 i 决定
for (j <- 11 to 20){
k= k+1
println(k,i,j) //输出60次 他由循环变量 i , j 决定
}
}
}
}
3.练习
1.编写代码打印输出如下图形:
1
22
333
4444
55555
object base28 {
def main(args: Array[String]): Unit = {
for(i <- 1 to 5){ //外层循环
for(j <-1 to i){
print(i)
}
println() //换行
}
}
}
2.编写代码打印输出如下图形:
55555
4444
333
22
1
object base28 {
def main(args: Array[String]): Unit = {
for(i <- 1 to 5){ //外层循环
for(j <-1 to 6-i){
print(i)
}
println() //换行
}
}
}
3.打印乘法口诀表
object base29 {
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()
}
}
}
运行结果:
颠倒九九乘法表
object base29 {
def main(args: Array[String]): Unit = {
for (i<-1 to 9){
for (j <- 1 to 10-i){
printf("%d×%d=%-4d",j,i,i*j)
/**
* %d 占位符,会输出一个整数
* %-4d 占位符,会输出一个整数,一共占据4个字符的空间大小,左对齐
* %4d 占位符,会输出一个整数,一共占据4个字符的空间大小,右对齐
*/
}
println()
}
}
}
运行结果:
4.百鸡百钱问题
公鸡1只,价格5钱;
母鸡1只,价格3钱;
小鸡3只,价格1钱(即1钱买3只小鸡);
用100钱买只鸡,问公鸡、母鸡、小鸡各有多少只?
object base30 {
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) 看看是否成立
*/
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(s"第${k}种:",x, y, z)
}
}
}
}
}
运行结果: