多重循环应用案例|学习笔记

简介: 快速学习多重循环应用案例。

开发者学堂课程【Scala 核心编程-基础多重循环应用案例】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/609/detail/8923


多重循环应用案例

 

目录

一、多重循环控制

二、应用实例

 

一、 多重循环控制介绍

1、将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for,while,do…while 均可作为外层循环和内层循环。【建议一般使用两层,最多不要超过3层】

2、实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为 false 时,才会完全跳出内层循环,才可以结束外层的当次循环,开始下一次的循环。

3、设外层循环次数为 m 次,内层为 n 次,则内层循环体实际上需要执行 m*n=mn 次。

 

二、应用实例

1.统计三个班成绩情况,每个班有5名同学,求出各个班的平均分和所有班级的平均分[学生的成绩从键盘输入]

例子:

新建一个包为 mutlfor,然后再创建一个文件为 Exercise

1分析思路:

① 定义 classNum 表示班级的个数,定义 stuNum 表示学生个数

② classScore 表示各个班级的总分,totalScore 表示所有班的总分

③ score 表示各个学生的成绩

④ 使用循环的方式输入成绩

2代码
package com.atguiu.chapter04.mutlfor

object Exercise {
val classNum = 3 //定义有3个班级

val stuNum = 5 //定义每个班级有5个学生

var score = 0.0  //学生的分数

var classScore = 0.0  //定义各个班级的总分

var totalScore =0.0  //所有班级的总分

for (i <-1 to classNum) {  //先对班级进行 for 循环

//先将classScore清0

classScore = 0.0

for (j <- 1 to stuNum) {  

printf(“请输入第%d班级的第%d个学生的成绩\n”,i,j)

score = StdIn.readDouble()  //接收

//统计

classScore +=score

}

printf(“第%d班级的平均分为%.2f\n”,i,classScore / stuNum)  //打印

注意:如果按照此方法编写,第一个班打印出来是正确的,但是第二个班及后续班级打印出来就会出现错误,因为对第二个班级进行遍历的时候,会对之前的数据进行累积,所以需要先将 classScore清0。

}

运行结果如下:
image.png

//计算出所有班的平均分

在原有代码的基础上进行修改:
//累计 totalScore

totalScore +=classScore

printf(“所有班级的平均分为%.2f,totalScore / (stuNum * classNum))

2.统计三个班及格人数,每个班有5名同学。

例子:

新建一个 Exercise02,输入代码:
package com.atguiu.chapter04.mutlfor

import scala.io._  //引入包

object Exercise02 {val classNum = 3  //定义有3个班级

val stuNum = 5  //定义每个班级有5个学生

var score = 0.0  //学生的分数

var classScore = 0.0  //定义各个班级的总分

var totalScore =0.0 //所有班级的总分

var passNum = 0  //统计及格人数

for (i <-1 to classNum) {  //先对班级进行 for 循环

//先将classScore清0

classScore = 0.0

for (j <- 1 to stuNum) {  

printf(“请输入第%d班级的第%d个学生的成绩\n”,i,j)

score = StdIn.readDouble() //接收

if (score >= 60) { //如果分数大于等于60,则认为此人成绩及格

passNum += 1  

//统计

classScore +=score

}

printf(“第%d班级的平均分为%.2f\n”,i,classScore / stuNum)totalScore +=classScore

printf(“所有班级的平均分为%.2f,totalScore / (stuNum * classNum))

printf(“所有班级的及格人数为%dpassNum))

运行结果如下:

image.png

结果正确

3.打印出九九乘法表

image.png

例子:

创建一个文件为 Exercise03,编写代码:
package com.atguigu.chapter04.mutlfor

object Exercise03 {def main(args:Array[String]):Unit = {

思路分析:
(1)使用两层循环,有9行,每一行的列数在增加

//为什么使用两层循环,因为打印的表有很多列和行,随着行数的增加,列数也在增加

(2)根据逻辑,可以编写代码

//列的个数就是行的个数

val num = 9 //定义一个变量为9 for (i <- 1 to num) {  //确定行数

for (j <- 1 to i ) {  //确定列数

printf(“%d * %d = %d\n”,i,j,i*j)

}

执行结果与答案顺序不同,应该for循环一次再进行换行,对该代码进行如下改进:
printf(“%d * %d = %d\t”,i,j,i * j)

}

println()

}}}

运行效果如下:
image.png

顺序还是不同,只需要将i与j交换位置即可:
printf(“%d * %d = %d\t”,j,i,i * j) //在同一行中i不会发生变化,会固定下来

运行结果如下:
image.png

结果正确

相关文章
|
数据采集 存储 监控
淘宝详情数据采集(商品上货,数据分析,属性详情,价格监控),海量数据值得get
淘宝详情数据采集涉及多个环节,包括商品上货、数据分析、属性详情以及价格监控等。在采集这些数据时,尤其是面对海量数据时,需要采取有效的方法和技术来确保数据的准确性和完整性。以下是一些关于淘宝详情数据采集的建议:
|
微服务
jeecg微服务项目调用接口报错Token验证失效的解决方法
jeecg微服务项目调用接口报错Token验证失效的解决方法
|
7月前
|
存储 安全 开发者
《探秘鸿蒙原生应用:分布式软总线如何开启跨设备协同新时代》
鸿蒙原生应用通过分布式软总线技术实现跨设备协同,带来便捷智能体验。该技术作为核心纽带,统一通信机制,整合多设备资源,支持自动发现连接、高效数据传输与设备抽象管理。实际应用场景涵盖多屏协同办公、智能家居控制及游戏跨设备对战等,极大提升生活与工作效率。尽管面临复杂环境稳定性及资源优化配置等挑战,未来分布式软总线将加速连接速度、强化安全性并优化资源管理,推动万物互联的智能生活发展。
318 0
|
人工智能 搜索推荐 API
智能家居:AI让生活更便捷
【7月更文第18天】在如今这个科技飞速发展的时代,智能家居已经不再是科幻电影里的桥段,而是真真切切走进了千家万户,让我们的日常生活变得既酷炫又贴心。AI,这个听起来有点神秘的词,其实正在悄悄改变我们的小日子,让“智能”成为家庭生活的新常态。下面,我们就来聊聊AI在智能家居中的几个应用场景,看看它是如何让生活变得更加便捷的。
327 1
|
消息中间件 存储
RabbitMQ之交换机
【1月更文挑战第9天】 RabbitMQ 消息传递模型的核心思想是: 生产者生产的消息从不会直接发送到队列。实际上,通常生产者甚至都不知道这些消息传递传递到了哪些队列中。 相反,生产者只能将消息发送到交换机(exchange),交换机工作的内容非常简单,一方面它接收来自生产者的消息,另一方面将它们推入队列。交换机必须确切知道如何处理收到的消息。是应该把这些消息放到特定队列还是说把他们到许多队列中还是说应该丢弃它们。这就的由交换机的类型来决定。
358 96
|
前端开发 JavaScript Java
Spring Boot中使用拦截器
本节主要介绍了 Spring Boot 中拦截器的使用,从拦截器的创建、配置,到拦截器对静态资源的影响,都做了详细的分析。Spring Boot 2.0 之后拦截器的配置支持两种方式,可以根据实际情况选择不同的配置方式。最后结合实际中的使用,举了两个常用的场景,希望读者能够认真消化,掌握拦截器的使用。
|
数据安全/隐私保护
kali下设置root权限(包含很多技巧)
kali下设置root权限(包含很多技巧)
|
Kubernetes Java 网络安全
K8S 部署 SpringBoot 项目(一篇够用)
K8S 部署 SpringBoot 项目(一篇够用)
K8S 部署 SpringBoot 项目(一篇够用)
|
存储 算法 C语言
C语言建立并查集
本文主要是针对408中22年新增的考点并查集用C语言实现。
316 3
C语言建立并查集
|
人工智能 运维 Cloud Native
SREWorks云原生数智运维工程实践-SREWorks 介绍篇-阿里云原生大数据运维平台SREWorks正式开源(上)
SREWorks云原生数智运维工程实践-SREWorks 介绍篇-阿里云原生大数据运维平台SREWorks正式开源
515 0