应用开发工程师干什么优化大师怎么删除学生
一、条件表达式
(一)语法格式
- if (条件) 值1 else 值2
(二)执行情况
- 条件为真,结果是值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、外部不能访问内部