1.for的嵌套循环
var k =0
for (i <- 1 to 5) {
println(i)// 输出五次,它由循环变量i的值决定
for(j <- 10 to 15){
k=k+1
println(k,i,j)//输出几次,它由什么值决定?
}
}
图中代码的println输出多少次由外层的循环决定,外层循环几次,他就输出几次
练习1:输出如图所示的结果,要求使用循环实现
for(i <- 1 to 5){
for(j <- 1 to 5) {
print(i)
}
println()
}
}
第一次代码输出结果为:
var n=0
for(i <- 1 to 5){
for(j <- 1 to i) {
print(i)
}
println()
}
}
将代码修改后得到输出结果:
练习2:打印一个99乘法表
for(i <- 1 to 9){
for(j <- 1 to i) {
printf("%dx%d=%-4d",j,i,i*j)
/**
* %d:占位符,会输出一个整数
* %-4d:占位符,会输出一个整数,一共占据4个字符的空间大小,左对齐!
* %4d:占位符,会输出一个整数,一共占据4个字符的空间大小,右对齐!
*/
}
println()
}
其中使用了占位符来控制乘法表中一一对齐
练习3:公鸡,母鸡,小鸡购买问题
先以数学思维列出公式方便if的条件判断,即(5x)+(3y)+(100-x-y)/3 == 100, 再给公鸡,母鸡,小鸡加上判定范围方便用for循环
最后列出代码:
for(x <- 0 to 20){
for(y <- 0 to 33){
if((5*x)+(3*y)+(100-x-y)/3 == 100){
println("公鸡有",x,"母鸡有",y,"小鸡有",100-x-y)
}
}
}