Scala之二流程控制

1、分支控制if-else

样例:需求1:需求:输入年龄,如果年龄小于18岁,则输出“童年”。如果年龄大于等于18且小于等于30,则输出“中年”,否则,输出“老年”

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

        println("input age")
        var age = StdIn.readInt()

        if (age < 18){
            println("童年")
        }else if(age>=18 && age<30){
            println("中年")
        }else{
            println("老年")
        }
    }
}

(2)需求2:Scala中if else表达式其实是有返回值的,具体返回值取决于满足条件的代码体的最后一行内容

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

        println("input age")
        var age = StdIn.readInt()

        val res :String = if (age < 18){
            "童年"
        }else if(age>=18 && age<30){
            "中年"
        }else{
            "老年"
        }

        println(res)
    }
}

(3)Java中的三元运算符可以用if else实现 如果大括号{}内的逻辑代码只有一行,大括号可以省略。如果省略大括号,if只对最近的一行逻辑代码起作用。

object TestIfElse {

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

        // Java
// int result = flag?1:0

        // Scala
        println("input age")
        var age = StdIn.readInt()
        val res:Any = if (age < 18)  "童年" else "成年"
"不起作用"

        println(res)
    }
}

2 For循环控制

2.1范围数据循环(To)前后闭合

for(i <- 1 to 3){
    print(i + " ")
}
println()

2.2 范围数据循环(Until)前闭合后开

for(i <- 1 until 3) {
    print(i + " ")
}
println()

2.3 循环守卫

循环守卫,即循环保护式(也称条件判断式,守卫)。保护式为true则进入循环体内部,为false则跳过,类似于continue。

for(i <- 1 to 3 if i != 2) {
    print(i + " ")
}
println()

2.4 循环步长

需求:输出1到10以内的所有奇数

for (i <- 1 to 10 by 2) {
    println("i=" + i)
}

2.5 嵌套循环

for(i <- 1 to 3; j <- 1 to 3) {
    println(" i =" + i + " j = " + j)
}

2.6 循环返回值

将遍历过程中处理的结果返回到一个新Vector集合中,使用yield关键字

val res = for(i <- 1 to 10) yield i
println(res)

2.7 倒叙打印

如果想倒序打印一组数据,可以用reverse。 

for(i <- 1 to 10 reverse){
    println(i)
}

3 循环中断

3.1 Scala内置控制结构特地去掉了break和continue,是为了更好的适应函数式编程,推荐使用函数式的风格解决break和continue的功能,而不是一个关键字。Scala中使用breakable控制结构来实现break和continue功能

import scala.util.control.Breaks._

object TestBreak {

    def main(args: Array[String]): Unit = {
    
        breakable {
            for (elem <- 1 to 10) {
                println(elem)
                if (elem == 5) break
            }
        }
    
        println("正常结束循环")
    }

 循环遍历10以内的所有数据,奇数打印,偶数跳过(continue)

object TestBreak {

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

        for (elem <- 1 to 10) {
            if (elem % 2 == 1) {
                println(elem)
            } else {
                println("continue")
            }
        }
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值