scala内建控制结构

一、条件表达式

(一)语法格式

 - if (条件)1 else2

(二)执行情况

  • 条件为真,结果是值1;条件为假,结果是值2。如果if和else的返回结果同为某种类型,那么条件表达式结果也是那种类型,否则就是Any类型
  • Scala的条件表达式有点类似于Java的条件运算符

(三)案例演示

任务1、根据输入值的不同进行判断

在这里插入图片描述
在这里插入图片描述

任务2、编写Scala程序,判断奇偶性
  • 打开Scala项目ScalaDemo,创建net.huawei.day02包,在包里创建Example01对象
package net.gxf.day02

import scala.io.StdIn

/**
 * 功能:判断奇偶性
 */

object Example01 {
  def main(args: Array[String]): Unit = {
    print("n = ")
    val n = StdIn.readLine.toInt
   val result =  if (n % 2 == 0)
      n.toString + "是偶数~"
    else
      n.toString + "是奇数~"
     println(result)
  }
}

在这里插入图片描述
在这里插入图片描述

二、块表达式

案例演示

在这里插入图片描述
在这里插入图片描述

三、for循环

(一)单重for循环

  • 案例演示
    在这里插入图片描述
任务1:输出1到10
  • 两种方式实现,一种使用Range类,一种使用to运算符
    在这里插入图片描述
任务2、遍历字符串,输出每个字符
  • 方法一、按索引取字符串的每个字符(传统for循环)
    在这里插入图片描述
  • 方法二:将字符串看作一个由多个字符组成的集合(增强for循环)
    在这里插入图片描述
任务3、计算 1 + 2 + 3 + … + 100
  • 注意sum必须定义为var型变量
    在这里插入图片描述
  • 利用集合的归并方法来求和最简单
    在这里插入图片描述
任务4、输出列表内的偶数(过滤)

在这里插入图片描述

任务5、输出全部两位素数
for (n <- 10 to 100; if !(n % 2 == 0 || n % 3 == 0 || n % 5 == 0 || n % 7 == 0))  print(n.toString + " ")

在这里插入图片描述

(二)嵌套for循环

案例演示

任务1、打印九九表

在这里插入图片描述

package net.gxf.day02

/**
 * 功能:双重循环打印九九表
 * 作者:gxg
 * 日期:2023年02月22日
 */
object Example02 {
  def main(args: Array[String]): Unit = {
    for (i <- 1 to 9) {
      for (j <- 1 to i) {
        print(i.toString + "×" + j + "=" + (i * j) + "\t")
      }
      println()
    }
  }
}

方法一、采用双重循环来实现

在这里插入图片描述

方法二、采用单重循环来实现

在这里插入图片描述

package net.gxf.day02

/**
 * 功能:单重循环打印九九表
 * 作者:gxf
 * 日期:2023年02月22日
 */
object Example03 {
  def main(args: Array[String]): Unit = {
    for (i <- 1 to 9; j <- 1 to i) {
      print(i.toString + "×" + j + "=" + (i * j) + "\t")
      if (j == i) println()
    }
  }
}

在这里插入图片描述

方法三、采用单重循环与流间变量绑定来实现

在这里插入图片描述

package net.gxf.day02

/**
 * 功能:单重循环与流间变量绑定打印九九表
 * 作者:gxf
 * 日期:2023年02月22日
 */
object Example04 {
  def main(args: Array[String]): Unit = {
    for (i <- 1 to 9; j <- 1 to i; sep = if (j == i) "\n" else "\t") {
      print(i.toString + "×" + j + "=" + (i * j) + sep)
    }
  }
}

在这里插入图片描述

方法四、采用单重循环、流间变量与yield来实现

在这里插入图片描述

package net.gxf.day02

/**
 * 功能:采用单重循环、流间变量与yield打印九九表
 * 作者:gxf
 * 日期:2023年02月22日
 */
object Example05 {
  def main(args: Array[String]): Unit = {
    val list = for (i <- 1 to 9; j <- 1 to i; sep = if (j == i) "\n" else "\t")
      yield i.toString + "×" + j + "=" + (i * j) + sep
    list.foreach(print)
  }
}

在这里插入图片描述

四、条件循环

(一)while循环

任务1、计算1+ 2 + 3 + … + 100

在这里插入图片描述

package net.gxf.day02

/**
 * 功能:等差数列求和
 * 作者:gxf
 * 日期:2023年02月23日
 */
object Example10 {
  def main(args: Array[String]): Unit = {
    var sum = 0
    var i = 1
    while (i <= 100) {
      sum = sum + i
      i = i + 1
    }
    println("1 + 2 + 3 + ... + 100 = " + sum)
  }
}

在这里插入图片描述

  • 采用函数式风格来写代码,递归函数来实现求和,注意:此处sum是常量

在这里插入图片描述

package net.gxf.day02

/**
 * 功能:等差数列求和
 * 作者:gxf
 * 日期:2023年02月23日
 */
object Example10_ {
  def mx(n: Int, sum: Int): Int = {
    if (n > 0) mx(n - 1, sum + n) else sum
  }

  def main(args: Array[String]): Unit = {
    println("1 + 2 + 3 + ... + 100 = " + mx(100, 0))
  }
}

在这里插入图片描述

任务2、打印全部水仙花数

在这里插入图片描述

package net.gxf.day02

import scala.io.StdIn

/**
 * 功能:判断奇偶性
 */

object Example01 {
  def main(args: Array[String]): Unit = {
    print("n = ")
    val n = StdIn.readLine.toInt
   val result =  if (n % 2 == 0)
      n.toString + "是偶数~"
    else
      n.toString + "是奇数~"
     println(result)
  }
}

在这里插入图片描述

(二)do while循环

任务:计算1+ 2 + 3 + … + 100

在这里插入图片描述

package net.gxf.day02

/**
 * 功能:等差数列求和
 * 作者:gxf
 * 日期:2023年02月23日
 */
object Example12 {
  def main(args: Array[String]): Unit = {
    var sum = 0
    var i = 1
    do {
      sum = sum + i
      i = i + 1
    } while (i <= 100)
    println("1 + 2 + 3 + ... + 100 = " + sum)
  }
}

在这里插入图片描述

五、异常处理

任务:演示try-catch-finally
  • try-catch-finally是有返回值的:如果没有异常就是try语句的返回值,如果有异常就是catch语句的返回值。注意不会是finally的返回值,finally即使有返回值,也会被抛弃,这点和Java是不同的。

在这里插入图片描述
在这里插入图片描述

六、match结构

案例演示

在这里插入图片描述

package net.gxf.day02

import scala.io.StdIn

/**
 * 功能:判断奇偶性
 */

object Example01 {
  def main(args: Array[String]): Unit = {
    print("n = ")
    val n = StdIn.readLine.toInt
   val result =  if (n % 2 == 0)
      n.toString + "是偶数~"
    else
      n.toString + "是奇数~"
     println(result)
  }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七、变量作用域

(一)Java变量作用域

  • 1、内部能访问外部

在这里插入图片描述
在这里插入图片描述

  • 2、外部不能看内部
    在这里插入图片描述

(二)Scala变量作用域

  • 1、内部不能访问外部
  • 在这里插入图片描述
package net.gxf.day02

/**
 * 功能:变量作用域 - 内部能访问外部
 * 作者:gxf
 * 日期:2023年03月01日
 */
object Example15 {
  def main(args: Array[String]): Unit = {
    val message = "欢迎访问醉美泸州~"
    if (true) {
      println(message)
    }
  }
}

在这里插入图片描述

  • 2、外部不能访问内部

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值