Scala—— 2. 流程控制

1. 键盘输入语句

println(“请输入姓名”)
val name = StdIn.readLine()
println(“请输入年龄”)
val age = StdIn.readInt()
println(“请输入薪水”)
val sal = StdIn.readDouble()
printf(“用户的信息为 name=%s age=%d sal=%.2f”, name, age, sal)

2.分支

A.单分支
if(条件表达式){  }
B.双分支
if(条件表达式){ }
else { }
C.多分支
if(条件表达式){ }
else { }  
… 
else { }      
D.嵌套分支
cala中没有switch,而是使用模式匹配来处理 match-case

3.循环

A.循环基本样式
for (i <- 1 to 3) {
println(i + “”)
}
for (i <- 1 until 3) {
println(i + “”)
}
for (i <- 1 to 3 if i != 2) {
println(i + “”)
}
for (i <- 1 to 3) {
if(i != 2){
println(i + “”)
}
}
B.循环赋值
for(i <- 1 to 3; j = 4 - i) {
print(j + " “) // 3,2,1
}
C.循环返回值
val res = for(i <- 1 to 10) yield {
if (i % 2 == 0) {
i
}else {
i + “不是偶数”
}
}
D.使用花括号{}代替小括号() ,{}内可以包括多个表达式
for {
i <- 1 to 3
j = i * 2} {
println(” i= " + i + " j= " + j)
}
for (i <- Range(1, 10, 2)) {
println(“i=” + i)
}

for (i <- 1 to 10 if i % 2 == 1) {
println(“i=” + i)
}

E.while循环
while (i < 10) {
println(“你好,” + i) //循环体
i += 1 //循环变量迭代
}

F.do…while循环

do {
printf(i + "hello\n")
i += 1
} while (i < 10)

G.break

package hello
import util.control.Breaks._

object boke_demo01 {

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

    var n = 1
    //breakable()函数
    //说明
    //1. breakable 是一个高阶函数:可以接收函数的函数就是高阶函数(后面详解)

    //2. def breakable(op: => Unit) {
    //    try {
    //      op
    //    } catch {
    //      case ex: BreakControl =>
    //        if (ex ne breakException) throw ex
    //    }
    //  }
    // (1) op: => Unit 表示接收的参数是一个没有输入,也没有返回值的函数
    // (2) 即可以简单理解可以接收一段代码块
    // 3. breakable 对break()抛出的异常做了处理,代码就继续执行
    // 4. 当我们传入的是代码块,Scala程序员会将() 改成{}
    breakable {
      while (n <= 20) {
        n += 1
        println("n=" + n)
        if (n == 18) {
          //中断while
          //说明
          //1. 在Scala中使用函数式的break函数中断循环
          //2. def break(): Nothing = { throw breakException }
          break()
        }
      }
    }

    println("ok2~~~~")

  }

}

Scala内置控制结构特地也去掉了continue,是为了更好地适应函数化编程,可以使用if-else或者循环守卫实现continue的效果

object boke_demo01 {
 
  def main(args: Array[String]): Unit = {
 
    //说明
    //1. 1 to 10
    //2. 循环守卫 if (i != 2 && i != 3) 这个条件为ture,才执行循环体
    //   即当i ==2 或者 i == 3时,就跳过
    for (i <- 1 to 10 if (i != 2 && i != 3)) {
      println("i=" + i)
    }
 
    //也可以写成如下的形式
    println("============================")
    for (i <- 1 to 10) {
 
      if (i != 2 && i != 3) {
        println("i=" + i)
      }
 
    }
  }
 
}

————Blueicex 2020/2/16 9:00 [email protected]

发布了55 篇原创文章 · 获赞 0 · 访问量 1962

猜你喜欢

转载自blog.csdn.net/blueicex2017/article/details/104332045