主要内容
1.多重循环的定义
2.输出特殊图形
3.乘法口诀表
4.百鸡百钱问题
(一)多重循环的基本使用
格式如下:
for ( 循环变量 <- 数据集) {
for(){
for(){
}
}
}
说明:
1.for可以替换成while循环。
2.循环的嵌套可以有多个,数量不限。
3.里外层循环执行的次数不相同
练习
1. println(i)会执行几次?
2. println(i,j)会执行几次?
for (i <- 1 to 5){
println(i)
for(j <- 10 to 15){
print(i, j)
}
}
结果如下
(二)输出特殊图形
1.编写代码打印输出如下图形:
1
22
333
4444
55555
object base028 {
def main(array: Array[String]): Unit={
for(i <- 1 to 5){ //外层循环
for(j <- 1 to i){
println(i)
}
println() // 换行
}
}
}
2.编写代码打印输出如下图形:
55555
4444
333
22
1
object base28 {
def main(args: Array[String]): Unit = {
for(i <- 1 to 5){ //外层循环
for(j <-1 to 6-i){
print(i)
}
println() //换行
}
}
}
(三)打印乘法口诀表
object base029 {
def main(array: Array[String]): Unit={
for(i <- 1 to 9){ //外层循环
for(j <- 1 to i){
// printf(s"${j}c"×s"${i}=${i*j}")
printf("%d×%d=%-4d",j,i,i*j)
/**
* %d:占位符,会输出一个整数
* %-4d :占位符,会输出一个整数,一共4个字符的空间大小,左对齐
* %4d:占位符,会输出一个整数,一共4个字符的空间大小,右对齐
*/
}
println() // 换行
}
}
}
颠倒九九乘法表
object base029 {
def main(array: Array[String]): Unit={
for(i <- 1 to 9){ //外层循环
for(j <- 1 to i){
// printf(s"${j}c"×s"${i}=${i*j}")
printf("%d×%d=%-4d",j,i,i*j)
/**
* %d:占位符,会输出一个整数
* %-4d :占位符,会输出一个整数,一共4个字符的空间大小,左对齐
* %4d:占位符,会输出一个整数,一共4个字符的空间大小,右对齐
*/
}
println() // 换行
}
}
}
(四).百鸡百钱问题
公鸡1只,价格5钱;
母鸡1只,价格3钱;
小鸡3只,价格1钱(即1钱买3只小鸡);
用100钱买只鸡,问公鸡、母鸡、小鸡各有多少只?
object base30 {
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) 看看是否成立
*/
var k = 0
for(x <- 0 to 20) {
for(y <- 0 to 33){
val z = 100 - x - y
//代入(1)
if(5*x + 3*y + z/3 == 100){
k+=1
println(s"第${k}种:",x, y, z)
}
}
}
}
}
结果如下: