scala内建控制结构
一、条件表达式
(一)语法格式
- if (条件) 值1 else 值2
(二)执行情况
- 条件为真,结果是值1;条件为假,结果是值2。如果if和else的返回结果同为某种类型,那么条件表达式结果也是那种类型,否则就是Any类型
- Scala的条件表达式有点类似于Java的条件运算符
(三)案例演示
任务1、根据输入值的不同进行判断


任务2、编写Scala程序,判断奇偶性
- 打开Scala项目ScalaDemo,创建net.huawei.day02包,在包里创建Example01对象
package net.gxf.day02import scala.io.StdIn/*** 功能:判断奇偶性*/object Example01 {def main(args: Array[String]): Unit = {print("n = ")val n = StdIn.readLine.toIntval result = if (n % 2 == 0)n.toString + "是偶数~"elsen.toString + "是奇数~"println(result)}
}


二、块表达式
案例演示


三、for循环
(一)单重for循环
- 案例演示

任务1:输出1到10
- 两种方式实现,一种使用Range类,一种使用to运算符

任务2、遍历字符串,输出每个字符
- 方法一、按索引取字符串的每个字符(传统for循环)

- 方法二:将字符串看作一个由多个字符组成的集合(增强for循环)

任务3、计算 1 + 2 + 3 + … + 100
- 注意sum必须定义为var型变量

- 利用集合的归并方法来求和最简单

任务4、输出列表内的偶数(过滤)

任务5、输出全部两位素数
for (n <- 10 to 100; if !(n % 2 == 0 || n % 3 == 0 || n % 5 == 0 || n % 7 == 0)) print(n.toString + " ")

(二)嵌套for循环
案例演示
任务1、打印九九表

package net.gxf.day02/*** 功能:双重循环打印九九表* 作者:gxg* 日期:2023年02月22日*/
object Example02 {def main(args: Array[String]): Unit = {for (i <- 1 to 9) {for (j <- 1 to i) {print(i.toString + "×" + j + "=" + (i * j) + "\t")}println()}}
}
方法一、采用双重循环来实现

方法二、采用单重循环来实现

package net.gxf.day02/*** 功能:单重循环打印九九表* 作者:gxf* 日期:2023年02月22日*/
object Example03 {def main(args: Array[String]): Unit = {for (i <- 1 to 9; j <- 1 to i) {print(i.toString + "×" + j + "=" + (i * j) + "\t")if (j == i) println()}}
}

方法三、采用单重循环与流间变量绑定来实现

package net.gxf.day02/*** 功能:单重循环与流间变量绑定打印九九表* 作者:gxf* 日期:2023年02月22日*/
object Example04 {def main(args: Array[String]): Unit = {for (i <- 1 to 9; j <- 1 to i; sep = if (j == i) "\n" else "\t") {print(i.toString + "×" + j + "=" + (i * j) + sep)}}
}

方法四、采用单重循环、流间变量与yield来实现

package net.gxf.day02/*** 功能:采用单重循环、流间变量与yield打印九九表* 作者:gxf* 日期:2023年02月22日*/
object Example05 {def main(args: Array[String]): Unit = {val list = for (i <- 1 to 9; j <- 1 to i; sep = if (j == i) "\n" else "\t")yield i.toString + "×" + j + "=" + (i * j) + seplist.foreach(print)}
}

四、条件循环
(一)while循环
任务1、计算1+ 2 + 3 + … + 100

package net.gxf.day02/*** 功能:等差数列求和* 作者:gxf* 日期:2023年02月23日*/
object Example10 {def main(args: Array[String]): Unit = {var sum = 0var i = 1while (i <= 100) {sum = sum + ii = i + 1}println("1 + 2 + 3 + ... + 100 = " + sum)}
}

- 采用函数式风格来写代码,递归函数来实现求和,注意:此处sum是常量

package net.gxf.day02/*** 功能:等差数列求和* 作者:gxf* 日期:2023年02月23日*/
object Example10_ {def mx(n: Int, sum: Int): Int = {if (n > 0) mx(n - 1, sum + n) else sum}def main(args: Array[String]): Unit = {println("1 + 2 + 3 + ... + 100 = " + mx(100, 0))}
}

任务2、打印全部水仙花数

package net.gxf.day02import scala.io.StdIn/*** 功能:判断奇偶性*/object Example01 {def main(args: Array[String]): Unit = {print("n = ")val n = StdIn.readLine.toIntval result = if (n % 2 == 0)n.toString + "是偶数~"elsen.toString + "是奇数~"println(result)}
}

(二)do while循环
任务:计算1+ 2 + 3 + … + 100

package net.gxf.day02/*** 功能:等差数列求和* 作者:gxf* 日期:2023年02月23日*/
object Example12 {def main(args: Array[String]): Unit = {var sum = 0var i = 1do {sum = sum + ii = i + 1} while (i <= 100)println("1 + 2 + 3 + ... + 100 = " + sum)}
}

五、异常处理
任务:演示try-catch-finally
- try-catch-finally是有返回值的:如果没有异常就是try语句的返回值,如果有异常就是catch语句的返回值。注意不会是finally的返回值,finally即使有返回值,也会被抛弃,这点和Java是不同的。


六、match结构
案例演示

package net.gxf.day02import scala.io.StdIn/*** 功能:判断奇偶性*/object Example01 {def main(args: Array[String]): Unit = {print("n = ")val n = StdIn.readLine.toIntval result = if (n % 2 == 0)n.toString + "是偶数~"elsen.toString + "是奇数~"println(result)}
}



七、变量作用域
(一)Java变量作用域
- 1、内部能访问外部


- 2、外部不能看内部

(二)Scala变量作用域
- 1、内部不能访问外部

package net.gxf.day02/*** 功能:变量作用域 - 内部能访问外部* 作者:gxf* 日期:2023年03月01日*/
object Example15 {def main(args: Array[String]): Unit = {val message = "欢迎访问醉美泸州~"if (true) {println(message)}}
}

- 2、外部不能访问内部

相关文章:
scala内建控制结构
一、条件表达式 (一)语法格式 - if (条件) 值1 else 值2(二)执行情况 条件为真,结果是值1;条件为假,结果是值2。如果if和else的返回结果同为某种类型,那么条件表达式结果也是那种类…...
Linux SSH命令实战教程,提升你的服务器管理基本功!
前言 大家好,又见面了,我是沐风晓月,本文是专栏【linux基本功-基础命令实战】的第62篇文章。 专栏地址:[linux基本功-基础命令专栏] , 此专栏是沐风晓月对Linux常用命令的汇总,希望能够加深自己的印象&am…...
【Python】Python进阶系列教程-- Python3 CGI编程(二)
文章目录 前言什么是CGI网页浏览CGI架构图Web服务器支持及配置第一个CGI程序HTTP头部CGI环境变量GET和POST方法使用GET方法传输数据简单的表单实例:GET方法使用POST方法传递数据通过CGI程序传递checkbox数据通过CGI程序传递Radio数据通过CGI程序传递 Textarea 数据通…...
do..while、while、for循环反汇编剖析
1、循环语句重要特征提取 循环语句最重要的特点就是执行的过程中会往上跳!!! 箭头往上跳的一般都是循环语句,比如下面的for循环: 2、do..while语句反汇编 #include<iostream> using namespace std; #pragma …...
【代码随想录】刷题Day53
1.最长公共子序列 1143. 最长公共子序列 和之前的一道题目的区别就是这个子序列不需要每个字符相邻。那么条件就变成两种了,一种是当前的字符相同,一种是不同。相同跟之前的条件一样;不同则需要继承上次比较的较大值。if (text1[i - 1] tex…...
MySQL 索引及查询优化总结
一个简单的对比测试 前面的案例中,c2c_zwdb.t_file_count表只有一个自增id,FFileName字段未加索引的sql执行情况如下: 在上图中,typeall,keynull,rows33777。该sql未使用索引,是一个效率非常低…...
什么是AJAX?
AJAX是一种基于Web的技术,它允许Web应用程序在不刷新整个页面的情况下与服务器进行交互。通过AJAX,Web应用程序可以使用JavaScript向服务器发送异步请求并在不干扰用户的情况下更新页面的部分内容。 AJAX是Asynchronous JavaScript and XML的缩写。尽管…...
报表生成器FastReport .Net用户指南:显示数据列、HTML标签
FastReport .Net是一款全功能的Windows Forms、ASP.NET和MVC报表分析解决方案,使用FastReport .NET可以创建独立于应用程序的.NET报表,同时FastReport .Net支持中文、英语等14种语言,可以让你的产品保证真正的国际性。 FastReport.NET官方版…...
bootstrap-dialog弹框,去掉遮盖层,可移动
1.去掉遮盖层的设置data-backdrop"false" <div class"modal fade" id"modal" aria-modal"true" role"dialog" data-backdrop"false" style"width:50%"><div class"modal-dialog modal-l…...
7. user-Agent破解反爬机制
文章目录 1. 为什么要设置反爬机制2. 服务器如何区分浏览器访问和爬虫访问3. 反爬虫机制4. User-Agent是什么5. 如何查询网页的User-Agent6. user-agent信息解析7. 爬虫程序user-agent和浏览器user-agent的区别8. 代码查看爬虫程序的user-agent9. 在代码中加入请求头信息 1. 为…...
3.Nginx+Tomcat负载均衡和动静分离群集
文章目录 NginxTomcat负载均衡和动静分离群集Nginx作用实验七层反向代理nginx动静分离四层反向代理负载均衡 NginxTomcat负载均衡和动静分离群集 Nginx是-款非常优秀的HTTP服务器软件 支持高达50 000个并发连接数的响应拥有强大的静态资源处理能力运行稳定内存、CPU等系统资源…...
数据结构与算法之树结构
目录 为什么要使用树结构树结构基本概念树的种类树的存储与表示常见的一些树的应用场景为什么要使用树结构 线性结构中不论是数组还是链表,他们都存在着诟病;比如查找某个数必须从头开始查,消耗较多的时间。使用树结构,在插入和查找的性能上相对都会比线性结构要好 树结构…...
【python】 用来将对象持久化的 pickle 模块
pickle 模块可以对一个 Python 对象的二进制进行序列化和反序列化。说白了,就是它能够实现任意对象与二进制直接的相互转化,也可以实现对象与文本之间的相互转化。 比如,我程序里有一个 python 对象,我想把它存到磁盘里ÿ…...
【博客654】prometheus配置抓取保护以防止压力过载
prometheus抓取保护配置以防止压力过载 场景 担心您的应用程序指标可能突然激增,以及指标突然激增导致prometheus压力过载 就像生活中的许多事情一样,标签要有节制。当带有用户 ID 或电子邮件地址的标签被添加到指标时,虽然它不太可能结束…...
Backtrader官方中文文档:第十三章Observers观察者
本文档参考backtrader官方文档,是官方文档的完整中文翻译,可作为backtrader中文教程、backtrader中文参考手册、backtrader中文开发手册、backtrader入门资料使用。 本章包含 backtrader 官方Observers章节全部内容,入口 : https://backtrader.com/docu/observers-and-sta…...
算法leetcode|54. 螺旋矩阵(rust重拳出击)
文章目录 54. 螺旋矩阵:样例 1:样例 2:提示: 分析:题解:rust:go:c:python:java:每次循环移动一步:每次循环完成一个顺时针:…...
单容水箱建模(自衡单容水箱+无自衡单容水箱)
自衡单容水箱Simulink建模和PLC源代码请参看下面文章链接: 单容双容水箱建模(simulink仿真+PLC代码)_RXXW_Dor的博客-CSDN博客PLC通过伯努利方程近似计算水箱流量详细内容请参看下面的文章博客PLC通过伯努利方程近似计算水箱流量(FC)_怎么用伯努利方程求某水位流量_RXXW_Dor的…...
分享Python7个爬虫小案例(附源码)
本次的7个python爬虫小案例涉及到了re正则、xpath、beautiful soup、selenium等知识点,非常适合刚入门python爬虫的小伙伴参考学习。注:若涉及到版权或隐私问题,请及时联系我删除即可。 1.使用正则表达式和文件操作爬取并保存“某吧”某帖子…...
我用ChatGPT写2023高考语文作文(一):全国甲卷
2023年 全国甲卷 适用地区:广西、贵州、四川、西藏 人们因技术发展得以更好地掌控时间,但也有人因此成了时间的仆人。 这句话引发了你怎样的联想与思考?请写一篇文章。 要求:选准角度,确定立意,明确文体&am…...
c++ modbusTCP
//Modbus TCP是一种基于TCP/IP协议的Modbus协议,它允许Modbus协议通过以太网进行通信。 //在C中,可以使用第三方库来实现Modbus TCP通信,例如libmodbus和QModbus。 //使用libmodbus库实现Modbus TCP通信的示例代码如下: //c #incl…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...
