一、与java一样有如下
1 顺序控制
2 分支控制
3)循环控制
注:IDEA 快捷键 ctrl+b可以查看源码
二、if分支
在做数学计算的时候,scala 包中(默认引入的) 的 math 的包对象有很多方法直接可用
x1.formatted("%.2f") 是保留两位小数,实际项目中可能有需要用到
嵌套分支不要超过 3 层
scala 中没有 switch,而是使用模式匹配来处理。
三、for循环
for 推 导式(for comprehension)或 for 表达式(for expression)
方式1--to
for(i <- 1 to 3){
print(i + " ")
}
说明
i 表示循环的变量, <- 规定好 to 规定
i 将会从 1-3 循环, 前后闭合
var list = List("hi", 100, 50, "kitty")
for (item <- list) {
println("item=" + item)
}
方式2--util
for(i <- 1 until 5) {
print(i + " ")
}
println()
说明:
1) 这种方式和前面的区别在于 i 是从 1 到 5-1
2) 前闭合后开的范围,和 java 的 arr.length() 类似
for (int i = 0; i < arr.lenght; i++){}
循环守卫,可以理解为条件判断,boolean的判断
for(i <- 1 to 3 if i != 2) {
print(i + " ")
}
println()
引入变量
for(i <- 1 to 3; j = 4 - i) {
print(j + " ") // 3,2,1
}
嵌套循环
for(i <- 1 to 3; j <- 1 to 3) {
println(" i =" + i + " j = " + j)
}
循环返回值
val res = for(i <- 1 to 10) yield i
println(res)
将遍历过程中处理的结果返回到一个新 Vector 集合中, i 这里是一个代码块,这就意味我们可以对 i 进行处理
使用花括号代替小括号(目前项目中没有使用,暂时不记录)
scala 的 for 循环形式和 java 是较大差异,请注意写法
步长控制
for (i <- Range(1, 10, 2)) {
println("i=" + i)
}
四、while循环(实际项目中如果涉及变量还是建议for循环)
scala去掉了break和continue,为了实现该功能,建议使用函数式方法
引入的包 import util.control.Breaks._
def main(args: Array[String]): Unit = {
var n = 1
// 传入的是代码块,scala 程序员会将() 改成{}
breakable {
while (n <= 20) {
n += 1
println("n=" + n)
if (n == 10) {
//中断 while
//1. 在 scala 中使用函数式的 break 函数中断循环
//2. def break(): Nothing = { throw breakException }
break()
}
}
}
}
使用
if
–
else
或是 循环守卫实现 continue
for (i <- 1 to 10 if (i != 2 && i != 3)) {
println("i=" + i)
}