多重循环的基本使用
格式注意:
1.for可以替换成while循环。
2.循环的嵌套可以有多个,数量不限。
3.里外层循环执行的次数不相同。
代码如下:
for ( 循环变量 <- 数据集) {
for(){
for(){
}
}
}
代码示例:
object for05 {
def main(args: Array[String]): Unit = {
var k = 0
for (i <- 1 to 5){
println(i) // 输出5次,由 i 循环变量的值所决定?
for (j <- 10 to 15){
k = k + 1
println(i,j) //输出30次,由i , j循环变量的值决定
}
}
}
}
1,输出特殊图形:
编写代码打印输出如下图形:
1
22
333
4444
55555
要求:
1.每行的数字个数都不相同,完成一行输出之后可以换行。
2.使用外层循环控制每行的重复次数,使用内层循环控制每行的具体内容。
实行代码如下:
object for06 {
def main(args: Array[String]): Unit = {
for (i <- 1 to 5){ //外层循环
for (j <- 1 to i){// 每行输出几个数字
print(i)
}
println()// 换行
}
}
}
2,打印乘法口诀表
思路:
1. 先观察每个式子的结构
2. 再观察每行的结构。
3. 使用双层for循环,写出一个矩形结构。
开始代码为:
object for07 {
def main(args: Array[String]): Unit = {
for (i <- 1 to 9){
for (j <- 1 to 9){
printf("%d×%d=%-4d", j , i , i*j)
}
/**
* %d: 占位符,会输出一个整数
* %-4d:占位符,会输出一个整数,一共占据四个字符的空间大小,左对齐
* %4d:占位符,会输出一个整数,一共占据四个字符的空间大小,右对齐
*/
println()
}
}
}
输出内容如下:
1×1=1 2×1=2 3×1=3 4×1=4 5×1=5 6×1=6 7×1=7 8×1=8 9×1=9
1×2=2 2×2=4 3×2=6 4×2=8 5×2=10 6×2=12 7×2=14 8×2=16 9×2=18
1×3=3 2×3=6 3×3=9 4×3=12 5×3=15 6×3=18 7×3=21 8×3=24 9×3=27
1×4=4 2×4=8 3×4=12 4×4=16 5×4=20 6×4=24 7×4=28 8×4=32 9×4=36
1×5=5 2×5=10 3×5=15 4×5=20 5×5=25 6×5=30 7×5=35 8×5=40 9×5=45
1×6=6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36 7×6=42 8×6=48 9×6=54
1×7=7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49 8×7=56 9×7=63
1×8=8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64 9×8=72
1×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81
如何简化成九九乘法表
简化如下:
将内部循环的九改成i
object for07 {
def main(args: Array[String]): Unit = {
for (i <- 1 to 9){
for (j <- 1 to i){//倒过来就是10-i
printf("%d×%d=%-4d", j , i , i*j)
}
/**
* %d: 占位符,会输出一个整数
* %-4d:占位符,会输出一个整数,一共占据四个字符的空间大小,左对齐
* %4d:占位符,会输出一个整数,一共占据四个字符的空间大小,右对齐
*/
println()
}
}
}
成功输出九九乘法表:
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
1×4=4 2×4=8 3×4=12 4×4=16
1×5=5 2×5=10 3×5=15 4×5=20 5×5=25
1×6=6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36
1×7=7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49
1×8=8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64
1×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81
3,百鸡百钱问题
问题:
公鸡1只5钱,母鸡1只3钱,小鸡3只1钱,用100钱买100只鸡,问公鸡,母鸡,小鸡各有几只?
思路:
1,列出公鸡,母鸡,小鸡的所有组合数量;
2,计算这些组合是否符合100钱的要求。
代码示例如下:
object for08 {
def main(args: Array[String]): Unit = {
//百鸡百钱
/**
* 设公鸡 x,母鸡 y 只,小鸡是 100-x-y
* 同时0 <= x <= 20 ,0 <= y <= 33
* 5x + 3y + (100-x-y)/3 = 100
* 暴力求解:
* 一个一个代入进去试
*/
var k = 0
for (x <- 1 to 20){
for (y <- 1 to 33){
val z = 100 - x - y
if(5*x + 3*y + z/3 == 100){
k += 1
println(k,x,y,z)
}
}
}
}
}
代码结果如下:
(1,3,20,77)
(2,4,18,78)
(3,7,13,80)
(4,8,11,81)
(5,11,6,83)
(6,12,4,84)