四、Scala流程控制结构


1.顺序结构

程序是从上到下,从左至右的顺序,依次逐行执行的(Scala默认)。
在这里插入图片描述

2.选择结构

2.1单分支

格式:

if(关系表达式){
	具体代码
}

在这里插入图片描述

2.2多分支

格式:

if(关系表达式1){
	//代码1
} else if(关系表达式2){
	//代码2
} else if(关系表达式n){ //else if可以有多组
	//代码n
} else(关系表达式2){ //所有的关系表达式都不成立的适合,执行这里的代码
	//代码n+1
}

在这里插入图片描述

3.注意事项

  • 和 Java 一样,如果大括号内只有一行代码可省略大括号
  • 条件表达式有返回值(Java没有)
  • 没有三元表达式,可以使用 if-else 代替
val sex = "male"
val result = if(sex == "male") 1 else 0
println("result: " + result) //打印结果为 result: 1

4.扩展:块表达式

使用一对大括号表示一个块表达式,块表达式也是有返回值的,最后一个表达式的值就是返回值。

val a = {
	println("1 + 1")
	1 + 1
}
println("a: " + a)
//输出结构为 a:2

5.循环结构

5.1 for循环

5.1.1简单循环

Scala中,for的格式和用法和Java有些差异,Scala的for表达式功能更强大。
格式:

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

示例:
打印10次"Hello"

val nums = 1 to 10
for(i <- nums) {
	println("Hello")
}

上述代码可以简写成:

for(i <- 1 to 10) println("Hello")

5.1.2 嵌套循环

需求:
使用for表达式,打印以下字符,每次只能输出一个"*"

*****
*****
*****
//写法一:普通版
for(i <- 1 to 3) {
	for(j <- 1 to 5) {
		print("*")
	}
	println() //打印完一行后,记得换行
}

//写法二:简略版
for (i <- 1 to 3) {
	for (j <- 1 to 5) if(j == 5) println("*") else print("*")
}

//写法三:合并版
for(i <- 1 to 3; j <- 1 to 5) if(j == 5) println("*") else print("*")

5.1.3 守卫

for表达式中,可以添加if判断语句,这个if判断就是守卫,能让for表达式更简洁。
格式:

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

示例:
使用for表达式打印1-10之间能够整除3的数字。

for(i <- 1 to 10 if 1 % 3 == 0) println(i)

5.1.4 for推导式

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

示例:
生产一个10、20、30…100的集合。

val v = for(i <- 1 to 10) yield i * 10
println(v)
//结果为:Vector(10, 20, 30, 40, 50, 60, 70, 80, 90, 100)

5.2 while循环

Scala的while循环跟Java一样。
格式:

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

5.3 do.while循环

Scala的do.while循环跟Java一样。
格式:

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

注意 :do.while循环不管判断条件是否成立,循环体都会执行一次。

5.4 break和continue

  • 在 Scala 中,移除了类似java和C++的break 和 continue 关键字
  • 如果要使用,需要 scala.util.control 包下的 Breaks 类的 breakablebreak
    方法

5.4.1实现break

用法:

  1. 导包:import scala.util.control.Breaks._
  2. 使用breakable将for表达式包起来
  3. for表达式中需要退出循环的地方,添加break()方法调用

示例:
使用for表达式打印1-10的数字,如果遇到数字5,则退出for表达式。

import scala.util.control.Breaks._

breakable{
	for(i <- 1 to 10) {
		if(i == 5) break() else println(i)
	}
}

5.4.2 实现continue

实现continue与break类似,但有一点不同:
实现break是用breakable{}将整个for表达式包起来,而实现continue是用breakable{}将for表达式的循环体包含起来就可以了。

示例:
用for表达式打印1-10之间,所有不能整除3的数字

import scala.util.control.Breaks._

for(i <- 1 to 100) {
	breakable{
		if(i % 3 == 0) break()
		else println(i)
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值