多重循环的基本使用
格式:
for ( 循环变量 <- 数据集) {
/ for(){
/ for(){
/ }
/ }
}
说明:
1.for可以替换成while循环
2.循环的嵌套可以有多个,数量不限。
3.里外层循环执行的次数不相同。
object base27 {
def main(args: Array[String]): Unit = {
// 循环嵌套
// 多重循环,循环里面还有循环
var n = 0 // 添加变量n的声明
for(i <- 0 to 10) {
//println(i)
for (j <- 5 to 20) {
for (k <- 1 to 10) {
n += 1
println(n, k, i, j)
}
}
}
}
}
结果如图:
(一)编写代码打印输出如下图形
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() // 换行
}
}
}
(二)打印乘法口诀表
提问:如何输出乘法口诀表
按1,3,5... 这个格式来输出,这就涉及到步长。
格式1:1 to 5 by 2
格式2:Range(1,5,2)
object base29 {
def main(args: Array[String]): Unit = {
for(i <- 1 to 9) { // 行
for (j <- 1 to i) { // 具体一行上的内容
// print(s"${j}x${i}=${i*j} ")
// %d 是表示占位符,这儿要填入一个整数
// %-4d 表示一个占位符,这儿要填入一个整数,并且一共四位,左对齐
// j 填入第一个 %d
// i 填入第二个 %d
// i*j的结果,填入 %-4d
printf("%d×%d=%-4d",j, i, i*j)
}
println() // 换行
}
}
}
结果如图:
(三)循环的白鸡百钱问题
“百钱百鸡”是一个经典的数学问题,最早见于中国古代数学著作《张丘建算经》。其描述如下: 鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
翻译过来就是: 公鸡(鸡翁)1只,值钱5; 母鸡(鸡母)1只,值钱3; 小鸡(鸡雏)3只,值钱1,百钱买百只鸡; 用100钱买100只鸡,问公鸡、母鸡、小鸡各有多少只?
object base30 {
def main(args: Array[String]): Unit = {
var k = 0
for (gj <- 0 to 100) {
for (mj <- 0 to 100) {
var xj = 100 - gj - mj
if (xj >= 0 && xj % 3 == 0) { // 小鸡的数量不能为负
if (5*gj + 3*mj + xj/3 == 100 ) { // 价格合计100元且小鸡数量是3的倍数
k += 1
println(k, gj, mj, xj)
}
}
}
}
}
}
结果如图: