Scala基础学习-循环

一、流程控制

循环结构、选择结构、循环结构

1、循环结构

从上至下,从左至右,依次执行,系统默认结构

2.选择结构

分类:单分支、双分支、多分支
(1)、单分支

object xuexi {def main(args: Array[String]): Unit = {val a = 20if(a > 15) {println("成功")}}
}
结果: 成功

(2)、双分支
解释:通过判断条件进行分支执行

object xuexi {def main(args: Array[String]): Unit = {val a = 10if(a > 15) {println("成功")} else {println("不成功")}}
}
结果:不成功

(3)、多分支

object xuexi {def main(args: Array[String]): Unit = {val a = 9if(a > 15) {println("成功")} else if(a == 10){println("不成功")} else {println("可能成功")}}
}
结果:可能成功

(4)、注意事项
1.和java一样,在Scala中,如果大括号{}内逻辑之有一行,则大括号可以省略
案例:

val sex = "male"
if(sex = "male") 1 else 0

2.在Scala中,条件表达式也是有返回值的

val result = if(sex == "male") 1 else 0
result 的结果为 1

3.scala里面没有三元表达式

3.嵌套分支

解释:
有时候,我们会涉及到"组合判断",即一个分支结构中又嵌套了另一个分支结构,这个种写法就叫嵌套分支。

/*** 定义三个变量a,b,c 分别记录要进行操作的值* 定义一个变量max,用来记录获取到最大值* 先判断a是否大于或者等于b* 条件成立。说明a大于或等于b,接着比较a和c的值,获取最大值,并赋给max* 条件不成立,说明最大值是b,让b和c再比较大小,赋给max* 此时打印max是最大值*/
object test {def main(args: Array[String]): Unit = {val a = 10val b = 20val c = 30var max = 0if (a > b) {max = if (a >= c) a else  c} else {max = if (b >= c) b else c}print(max)}
}
4.块表达式

解释:scala中,使用{} 表示一个块表达式
和if一样,块表达式也是有值的

val a = {println("1+1")1+1
}
结果: 1+1  //先打印2    //后执行打印下面的1 + 1
5.循环结构

分类: for循环 while循环 do.while循环
1.for循环
格式:

for(i <- 表达式/数组/集合){// 逻辑代码
}

案例:
打印十次"Hello,Scala"

object test {def main(args: Array[String]): Unit = {val name = 1 to 10for (i <- name){println("Hollo,Scala" + i)}}
}
结果:
Hollo,Scala1
Hollo,Scala2
Hollo,Scala3
Hollo,Scala4
Hollo,Scala5
Hollo,Scala6
Hollo,Scala7
Hollo,Scala8
Hollo,Scala9
Hollo,Scala10

简化代码:

object test {def main(args: Array[String]): Unit = {for (i <- 1 to 10) println("Hollo,Scala" + i) //因为逻辑就一行,可以省略{},结果一样}
}

2.嵌套循环
解释:循环嵌套循环
案例:

object test {def main(args: Array[String]): Unit = {for (i <- 1 to 3) { //外循环控制列for (j <- 1 to 5) { //内循环控制行print("*")}println("*")}}
}
结果:
******
******
******

简化:

object test {def main(args: Array[String]): Unit = {for (i <- 1 to 3) {for (j <- 1 to 5) if (j == 5) println("*") else print("*")}}
}

简化2

object test {def main(args: Array[String]): Unit = {for (i <- 1 to 3; j <- 1 to 5) if (j == 5) println("*") else print("*")//scala独有的写法,可以将fot条件放在一个括号里,用;隔开}
}

3.守卫
解释:for表达式中,可以添加if判断语句,这个if判断就称之为守卫。
格式:

for(i <- 表达式/数组/集合 if 表达式){//逻辑代码
}

案例:

/*** 得到1到10被3整除的数*/
object test {def main(args: Array[String]): Unit = {for (i <- 1 to 10 if i % 3 == 0)  println(i)}
}
结果:
3
6
9

4.for推导式
解释:Scala中的for循环也是有返回值的,在for循环体中,可以使用yield表达式构建出一个集合(可以简单理解为:就是一组数据),我们把使用yield的for表达式称为推导式

/*** 得到10,20,30,40 ... 100的集合*/
object test {def main(args: Array[String]): Unit = {val nums = for(i <- 1 to 10) yield  i * 10println(nums)}
}
结果:Vector(10, 20, 30, 40, 50, 60, 70, 80, 90, 100)

5.while 循环
解释:和java一样,条件是false循环结束,是true就继续执行循环体
格式:

while (判断条件){//循环体//控制条件
}

案例:

object test {def main(args: Array[String]): Unit = {var i = 1while (i <= 10) {println(i)i = i + 1}}
}
结果:
1
2
3
4
5
6
7
8
9
10

5.do.while 循环
格式:

do{
//循环体
//控制条件
} while(判断条件)

案例:

object test {def main(args: Array[String]): Unit = {var i = 1do {println(i)i = i + 1} while (i <= 10)}
}
结果:
1
2
3
4
5
6
7
8
9
10

6.实现break
解释:在for循环中,需要推出循环的地方,需要添加break()方法调用
用法:
1.导包

import scala.util.control.Breaks._

2.使用breakable将for表达式包起来
3.for表达式中需要退出循环的地方,添加break()方法
案例:
使用for表达式打印1-10的数据字,但是如果遇到数据5,则退出for表达式

object test {def main(args: Array[String]): Unit = {import scala.util.control.Breaks._breakable(for (i <- 1 to 10) {if (i == 5) break() else println(i)})}
}
结果:
1
2
3
4

7.实现continue
和上面break类似,主要是主要看breakable在什么位置,主要功能式终止本次循环,执行下一次循环
案例:用for表达式打印1-10之间,所有不能整除3的数字

object test {def main(args: Array[String]): Unit = {import scala.util.control.Breaks._for (i <- 1 to 100) {breakable(if (i % 3 == 0) break() else println(i)}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/9176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python】JSON数据的使用

一、JSON JSON是什么&#xff1a; JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;它以易于理解和生成的文本格式来描述数据对象。JSON最初是由Douglas Crockford在2001年提出的&#xff0c;它的设计受到了JavaScript对象字面量…

系统安全:物联网安全面试

文章目录 岗位要求 岗位要求

kafka(七)——消息偏移(消费者)

概念 消费者消费完消息后&#xff0c;向_consumer_offset主题发送消息&#xff0c;用来保存每个分区的偏移量。 流程说明 consumer发送JoinGroup请求&#xff1b;coordinator选出一个consumer作为leader&#xff0c;并将topics发送给leader消费者&#xff1b;leader consumer…

const修饰的成员函数

欢迎来到博主的专栏——C杂谈 博主ID&#xff1a;代码小豪 文章目录 const修饰了什么const修饰的成员函数是为什么&#xff1f;问答环节 const修饰的成员函数并非是在返回值类型用const&#xff0c;而是在成员函数的末尾加上const&#xff0c;比如&#xff1a; const char&…

全网最详细的Python自动化测试(unittest框架)

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

ssm105基于JAVAEE技术校园车辆管理系统+jsp

校园车辆管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本校园车辆管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短…

gtest的编译与使用

文章目录 gtest的编译与使用概述笔记CMake参数官方文档测试程序测试效果END gtest的编译与使用 概述 gTest是 googletest的缩写&#xff0c;如果直接找gTest项目&#xff0c;是找不到的。 库地址 https://github.com/google/googletest.git 迁出到本地后&#xff0c;切到最新…

景源畅信数字:抖音小店的入住门槛大不大?

近年来&#xff0c;随着短视频平台的崛起&#xff0c;抖音小店逐渐成为了众多商家和创业者关注的焦点。那么&#xff0c;抖音小店的入住门槛究竟大不大呢?本文将从四个方面对这一问题进行详细阐述。 一、注册流程 抖音小店的注册流程相对简单&#xff0c;只需按照官方指引完成…

HackBar 新手使用教程(入门)

啥是Hackbar&#xff1f; Hackbar是一个Firefox 的插件,它的功能类似于地址栏,但是它里面的数据不受服务器的相应触发的重定向等其它变化的影响。 有网址的载入于访问,联合查询,各种编码,数据加密功能。 这个Hackbar可以帮助你在测试SQL注入,XSS漏洞和网站的安全性,主要是帮助…

揭秘丨文字游侠AI工具:一键生成高质量爆文赚米,提升20倍写作效率,附上渠道和实操教程!

在这个信息泛滥的时代&#xff0c;内容创作者们不断寻求更高效、更创新的方法&#xff0c;以便在众多竞争者中脱颖而出。虽然平台如今日头条为他们提供了展示才华和获取收益的舞台&#xff0c;但如何在激烈的竞争中站稳脚跟&#xff0c;仍是他们需要面对的挑战。然而&#xff0…

​Inf-DiT:Upsampling Any-Resolution Image、Vidu、MVDiff、Trio-ViT

本文首发于公众号&#xff1a;机器感知 ​Inf-DiT&#xff1a;Upsampling Any-Resolution Image、Vidu、MVDiff、Trio-ViT Inf-DiT: Upsampling Any-Resolution Image with Memory-Efficient Diffusion Transformer Diffusion models have shown remarkable performance in im…

力扣题目101:对称二叉树

作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 会一些的技术&#xff1a;数据分析、算法、SQL、大数据相关、python 欢迎加入社区&#xff1a;码上找工作 作者专栏每日更新&#xff1a; LeetCode解锁1000题: 打怪升级之旅 python数据分析…

js原生手写一个拖拽小功能

先上效果图 附上代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"widthd…

Python自动化测试五大框架(测试员收藏夹必备)

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

Java 语法 (杂七杂八的知识)

面向对象三大特性 封装, 多态, 继承 基本数据类型 一字节 (Byte) 占八位 (bit) JDK, JRE, JVM JDK (Java Development Kit) : Java 开发工具包, 包括了 JRE, 编译器 javac, 和调试工具 Jconsole, jstack 等 JRE (Java Runtime Environment) : Java 运行时环境, 包括了 JVM , …

基于Vue3与ElementUI Plus的酷企秀场景可视化DIY设计器:前端技术引领下的数字化展示新篇章

一、引言 在当今信息化高速发展的时代&#xff0c;企业对于展示自身形象、提升用户体验以及增强品牌知名度的需求日益迫切。针对这一市场需求&#xff0c;我们推出了基于Vue3与ElementUI Plus的酷企秀场景可视化DIY设计器。该产品不仅具备电子画册、VR全景、地图秀三大核心功能…

Java小白_面向对象程序设计01顺序结构_01Java顺序结构之数学函数之根据三角形三边长求面积

练习 -Java顺序结构之数学函数之根据三角形三边长求面积 Java顺序结构之数学函数之根据三角形三边长求面积 练习 -Java顺序结构之数学函数之根据三角形三边长求面积1. 任务要求任务描述编程要求测试说明 2. 任务分析1. 输入输出分析2. 需求分析3. 所需知识1. java 库 如何获取输…

Docker-compose部署Fastapi项目

Docker-compose部署Fastapi、postgres、Redis、Nginx) 之前有写过使用容器部署的方式&#xff0c;这次尝试使用Docker-compose试一次大胆的尝试 使用容器的方式部署只是掌握这项技能的基础&#xff0c;在使用Docker-compose的过程中会有些稍许的不同。毕竟踩过的坑才算是跨过去…

如何在PPT中插入网页?这样操作,免费还高效!

融合课、跨学科课&#xff0c;已经是近两年来教育界的热门词。 在公开课、微课比赛中&#xff0c;不添融合一些较为先进的信息技术&#xff0c;都不好意思拿出手了。 最近&#xff0c;由不坑老师开发制作的Office插件——不坑盒子&#xff0c;实现了在PPT中插入网页&#xff…

ARM(4)缓存一致性

目录 一、缓存一致性问题 二、一致性实现方案 2.1 目录一致性协议 2.2 嗅探一致性协议 三、CHI协议 3.1 cache state 3.2 snoop维护一致性 四、其他一致性协议 4.1 MSI协议 4.2 MESI 协议 4.3 MOESI协议 本文介绍以下内容&#xff1a; 缓存一致性问题一致性实现方案…