Scala内建控制-多重循环

73 阅读1分钟

多重循环的基本使用

  • 基本格式:
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)
      }
    }
  }