一. for循环
格式:
for ( 循环变量 <- 数据集) {
// 循环体代码
}
说明:
1.如果循环变量的类型能被推断出来,是可以省略掉变量类型的。
2.这里的数据集可以是任意类型的数据集合,如字符串,集合,数组等等。
输出1-100以内的奇数
//by:步长,循环变量每次增加的值。默认就是 1
// for (i <- 1 to 100 by 1) <====> for ( i <- 1 to 100)
var sum = 0
for (i <- 1 to 100 by 2 ){
println (i)
sum += 1
}
println (sum)
结果如图:
二. 多重循环的基本使用
格式:
for ( 循环变量 <- 数据集) {
for(){
for(){
}
}
}
说明:
1.for可以替换成while循环
2.循环的嵌套可以有多个,数量不限。
3.里外层循环执行的次数不相同。
案例
var n = 0
for(i <- 1 to 10) {
for(j <- 5 to 20) {
for(k <- 1 to 10) {
n += 1
println(n, k, i, j)
}
}
}
结果如图:
三. 输出特殊图形
编写代码打印输出如下图形:
1
22
333
4444
55555
for(i <-1 to 5){
for (j <- 1 to i) {
print(i)
}
println()
}
结果如图:
四. 打印乘法口诀表
for (i <- 1 to 9) { // 控制行数,从 1 到 9
for (j <- 1 to i) { // 控制每行的列数,列数不超过当前行数
// print(s"$j×$i=${j*i} ") 这个也可以
// %d 表示占位符,这里填整数
// %-4d 表示一个占位符,这里填整数,并且:一共四位,左对齐
// j 填入第一个 %d
// i 填入第二个 %d
// i*j 的结果填入 %-4d
printf("%d×%d=%-4d", j, i, j * i)
}
println() // 每行结束后换行
}
结果如图:
五. 循环的白鸡百钱问题
“百鸡百钱”是一个经典的数学问题,最早见于中国古代数学著作《张丘建算经》。其原文如下:
鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
翻译成现代语言:
公鸡(鸡翁)1只,价格5钱;
母鸡(鸡母)1只,价格3钱;
小鸡(鸡雏)3只,价格1钱(即1钱买3只小鸡);
用100钱买100只鸡,问公鸡、母鸡、小鸡各有多少只?
var k = 0
for(gj <- 0 to 100){
for(mj <- 0 to 100){
var xj = 100 - gj - mj
if(xj >= 0){ // 小鸡的数量不能为负
if(gj * 5 + mj * 3 + xj / 3 == 100 && xj % 3 == 0){
k += 1// 如果合计是100元
println(k, gj, mj, xj)
}
}
}
}
结果如图: