当前位置: 首页 > news >正文

scala内建控制结构

一、条件表达式

(一)语法格式

 - if (条件)1 else2

(二)执行情况

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

(三)案例演示

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

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

任务2、编写Scala程序,判断奇偶性

  • 打开Scala项目ScalaDemo,创建net.huawei.day02包,在包里创建Example01对象
package net.gxf.day02import scala.io.StdIn/*** 功能:判断奇偶性*/object Example01 {def main(args: Array[String]): Unit = {print("n = ")val n = StdIn.readLine.toIntval result =  if (n % 2 == 0)n.toString + "是偶数~"elsen.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) + seplist.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 = 0var i = 1while (i <= 100) {sum = sum + ii = 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.day02import scala.io.StdIn/*** 功能:判断奇偶性*/object Example01 {def main(args: Array[String]): Unit = {print("n = ")val n = StdIn.readLine.toIntval result =  if (n % 2 == 0)n.toString + "是偶数~"elsen.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 = 0var i = 1do {sum = sum + ii = 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.day02import scala.io.StdIn/*** 功能:判断奇偶性*/object Example01 {def main(args: Array[String]): Unit = {print("n = ")val n = StdIn.readLine.toIntval result =  if (n % 2 == 0)n.toString + "是偶数~"elsen.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、外部不能访问内部

在这里插入图片描述

http://www.lryc.cn/news/92656.html

相关文章:

  • Linux SSH命令实战教程,提升你的服务器管理基本功!
  • 【Python】Python进阶系列教程-- Python3 CGI编程(二)
  • do..while、while、for循环反汇编剖析
  • 【代码随想录】刷题Day53
  • MySQL 索引及查询优化总结
  • 什么是AJAX?
  • 报表生成器FastReport .Net用户指南:显示数据列、HTML标签
  • bootstrap-dialog弹框,去掉遮盖层,可移动
  • 7. user-Agent破解反爬机制
  • 3.Nginx+Tomcat负载均衡和动静分离群集
  • 数据结构与算法之树结构
  • 【python】 用来将对象持久化的 pickle 模块
  • 【博客654】prometheus配置抓取保护以防止压力过载
  • Backtrader官方中文文档:第十三章Observers观察者
  • 算法leetcode|54. 螺旋矩阵(rust重拳出击)
  • 单容水箱建模(自衡单容水箱+无自衡单容水箱)
  • 分享Python7个爬虫小案例(附源码)
  • 我用ChatGPT写2023高考语文作文(一):全国甲卷
  • c++ modbusTCP
  • linux(信号结尾)
  • 【漏洞修复】node-exporter被检测出来pprof调试信息泄露漏洞
  • 在linux 上安装 NFS服务器软件
  • 网卡中的Ring buffer -- 解决 rx_resource_errors 丢包
  • 六月九号补题日记:Codeforces Round 877 (Div. 2)
  • python基础选择题,高中适用
  • Linux 面试题-(腾讯,百度,美团,滴滴)
  • DDD--战略设计步骤
  • Web Scoket简述
  • “Docker 技术在企业中的应用及挑战解决方案“
  • vue中开发包、生产包、全局包的区别以及安装语法