多重循环的基本使用
1.for可以替换成while循环。
2.循环的嵌套可以有多个,数量不限。
3.里外层循环执行的次数不相同。
for ( 循环变量 <- 数据集) {
for(){
for(){
}
}
}
使用如下:
object E01 {
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次
}
}
}
}
输出特殊图形
object E02 {
def main(args: Array[String]): Unit = {
for (i <- 1 to 5) {
// 打印 i 个 i 字符
for (_ <- 1 to i) {
print(i)
}
// 换行
println()
}
}
}
输出如图
打印乘法口诀表
object E05 {
def main(args: Array[String]): Unit = {
for(i <-1 to 9){
for(j <- 1 to i){
// println(s"${j}*${i}=${i*j}")
printf("%d*%d=%-4d", j,i,i*j)
/**
* %d:占位符,会输出一个整数
* %4d:占位符,会输出一个整数,一共占4个字符的空间大小,左对齐?
* %4d:占位符,会输出一个整数,一共占4个字符的空间大小,右对齐?
*/
}
println()
}
}
}
输出如图
百鸡百钱问题
object E06 {
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)看看是否成立
* ...
* 2.(0,33,37) 代入 (1)看看是否成立
*/
var k = 0
for(x <- 1 to 20){
for(y <- 1 to 33){
val z = 100 - x - y
// 代入(1)
if(5*x + 3*y + z/3 == 100){
k += 1
println(k, x,y,z)
}
}
}
}
输出如图