Scala基础(3):流程控制

判断

if表达式

package yangjun.myJudge

/**
  * Created by Yang Jun on 2016/7/23.
  */

import scala.io.StdIn.readInt

object Judge {
  def main(args: Array[String]) {

    //判断
    print("请输入x的值:")
    val x = readInt()

    val arg_1 = if (x > 0) 1 else -1 //类似Java中的if结合?:语句

    val arg_2 = if (x > 0) 1 else "Hello"

    val arg_3 = if (x > 0) 1 //相当于if(x>0) 1 else ();else返回的是无有用值,即Unit类

    // 分行的写法
    val arg_4 = if (x > 0) {
      1
    } else "Hello"

    println("arg_1:" + arg_1)
    println("arg_2:" + arg_2)
    println("arg_3:" + arg_3)
    println("arg_4:" + arg_4)

  }

}

你应该也注意到了,scala中一个表达式结束后是可以不用加分号的,除非同一行还有其他表达式

这里写图片描述

循环

while

package yangjun.myJudge

/**
  * Created by Yang Jun on 2016/7/23.
  */
object Loop {
  def main(args: Array[String]) {
    //while和do循环
    val s = "Hello"
    var n = 0
    while (n < s.length) {
      println(n)
      n += 1;
    }
  }
}

这里写图片描述

for循环

package yangjun.myJudge

/**
  * Created by Yang Jun on 2016/7/23.
  */
object Judge {
  def main(args: Array[String]) {

    //for循环
    var sum = 0
    for (i <- 0 to 4) sum += 1 // "<-" 表示区间范围,"0 to 4"为前闭后闭区间,"i <- 0 to 4"叫做生成器,"sum+=1"为循环体
    println(sum)

    val temp_1 = "Hello"
    for (i <- 0 until temp_1.length) print("^") // "0 until s.length"表示前闭后开区间
    println()

    //分行写法
    for (i <- "Hello") {
      println(i)
    }


    //生成器的守卫
    for (i <- 1 to 3; j <- 1 to 3 if i != j) print(10 * i + j + " ") //"if 1!=j"是"j <- 1 to 3"这个生成器的守卫
    println() //返回12 13 21 23 31 32


    // for...yield组合
    val for5 = for (c <- "hello"; i <- 0 to 1) yield (c + i).toChar //每次迭代生成一个值,然后返回一个集合,类型以第一个生成器兼容
    //返回”hieflmlmop”
    println("for...yield:" + for5)


    val for6 = for (i <- 0 to 1; c <- "hello") yield (c + 1).toChar //生成Vector('h','e','l','l','o','i','f','m','m','p')
    println("for...yield:" + for6)
  }

}

这里写图片描述

for 循环格式一:

for(i <- 区间){表达式}

生成器:i <- 区间
区间中 0 to 5表示包括0和5,0 until 5表示包括0不包括5

for 循环格式二:

for (i <- 数组或表达式) {表达式}

类似Java的增强for循环,下面几种格式都可以用。

for 循环格式三:

for (i <- 区间1 条件1;j <- 区间2 条件2){表达式}

生成器1的守卫:条件1
生成器2的守卫:条件2

for 循环格式四:

val vector = for (i <- 区间) yield {表达式} 

每次迭代生成一个值,然后返回一个集合,类型以第一个生成器兼容

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值