开发者学堂课程【Scala 核心编程-基础:多分支】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/609/detail/8912
多分支
基本内容
一、多分支
二、案例演示
一、多分支
1、基本语法
if (条件表达式1) {
执行代码块1
}
else if (条件表达式2) {
执行代码块2
}
……
eIse {
执行代码块 n
}
2、多分支的流程图
(1) 说明:当条件表达式1成立时,即执行代码块1,如果表达式1不成立,才去判断表达式2是否成立,如果表达式2成立,就执行代码块2,以此类推,如果所有的表达式都不成立,则执行 else 的代码块,注意:
(2) 只能有一一个执行入口。
(3) 这个跟 Java 的内容是一样的,以上 Scala 的一个流程图,就是要它先去判断第一个表达式成不成立,如果第一个表达式成立,则执行对应的代码块,否则值去判断第二个表达式,如果成立执行,第二个如果不成立则继续判断,那么有一点要注意一下,就是不管这个多分子有多么复杂,只能有一个执行入口,这点一定要注意,这是个基本常识,不管这个程序有多少个条件表达式,它只能有一个入口。
3、案例演示
请大家看个案例 [IfDemo3.scala]:
岳小鹏参加 scala 考试,他和父亲岳不群达成承诺: 如果:
成绩为100分时,奖励一辆 BMW;
成绩为(80,99]时, 奖励一台 iphone7plus;
当成绩为[60,80]时,奖励一个 iPad;
其它时,什么奖励也没有。
说明:成绩在控制台输入!
解:这里一定要用到多分支,因为有四种情况;那新建在之前的包中新建一个文件,叫做 ifelsesDemo03; 案例一般都不难,首先成绩是从控制台输入,那这个时候先打一句话:请输入成绩,也就是分数,现在用一个变量来接收,就是 stdIn. readDouble,现在开始判断,如果这个成绩等于100分,那么就提示一句话,成绩100奖励宝马一台,紧接着 elseif,有两个写法,第一种写法是用范围来判断,第二个写法是比较严谨的,是两头的判断、严格的判断,比如说第一种写法可以这么去写:因为他这个成绩是100?不会超过100,那可以这样写:} else if (score > 80),因为是大于80分,大于80分就可以这样写,因为是按一个范围来做的,分数肯定是低于100分,最多得100分,所以说100就到这儿,如果不判断分数大于80,因为这个分数已经是最上限了;如果想写的严谨一点,可以把条件写清楚,就是同时要满足条件,写法如下:} else if (score > 80 && score <= 99) {,这个以前老师也是讲过的,有些时候要直接控制某个条件将后面一个条件去掉也没有问题,但如果把这个去掉,有个前提就是分数不要去超过100,如果超过100或者低于零分就会报错。成绩为成绩为(80,99]时, 奖励一台 iphone7plus。如果成绩是大于等于60,并且成绩小于等于80,那么这个时候又提示另外一句话:奖励 ipad一个;最后这个条件是肯定是小于60,没有任何奖励,最后来运行一下。
import scala. io. stdIn
object ifelsesDemo03 {
def main(args: Array[String]): Unit = {
/*
岳小鹏参加 scala 考试,他和父亲岳不群达成承诺:
如果:
成绩为100分时,奖励一辆 BMW;
成绩为(80,99]时,奖励一台 iphone7plus ;
当成绩为[60, 80]时,奖励一个 iPad;
其它时,什么奖励也没有。
成绩是从控制台输入
*/
println("请输入成绩")
val score = stdIn. readDouble()
if (score == 100) {
println("成绩为100分时,奖励一辆BM
W
")
} else if (score > 80 && score <= 99) {
//写法1使用范围,写法2就是严格的判断
println("成绩为(80,99]时, 奖励一台iphone7plus;" )
} else if (score >= 60 && score <= 80) {
println("
奖
励一个iPad")
} else {
println("没有任何笑励")
}
运行结果:
(1) 成绩为100分,奖励一辆 BMW;
(2) 成绩为84分,成绩为(80,99]时, 奖励一台 iphone7plus;
其他的就不再做演示了。
二、案例演示
1. 多分支在上一板块就说完了,现在再来看一个练习题,同学们先自行设计,求一个二元一次方程的根,a、b、c分别为函数的参数,这个函数先可以暂时不写,因为还没讲到函数,所以说直接写死就行了,如果 b2- 4ac>0则有两个解,如果 b2- 4ac=0只有一个解,b2- 4ac<0则无解,那么测试的数据是a=3,b=100,c=6;然后提示信息,如果有两个解的话,X1的只是这么一个计算方式,X2是这么一个方式:X2=(-b-sqrt(b2-4ac))/2a。
2. 求 ax2 +bx+c=0方程的根。a,b,c 分别为函数的参数,如果: b2-4ac>0,则有两个解; b2-4ac=0,则有一一个解; b2-4ac<0, 则无解; [a=3 b=100 c=6]
提示1: x1=(-b+sqrt(b2- 4ac))/2a
X2=(-b-sqrt(b2- 4ac))/2a
提示2: sqrt(num)在 scala 包中(默认引入的)的 math 的包对象有很多方法直接可用。
3. 不管学得好还是学得不好,必须要跟上这个节奏,本身这个技术学习起来都不会很难,包括以后学的大数据都不是特别难,都是一个熟练的过程,对于什么时候才会接触真正比较困难的就是工作以后,一个是业务逻辑,一个是性能的优化,才会有些难度,所以说不要觉得这个简单,如果没有这个基础,有些内容是没有办法理解的。同样新建一个这样的文件,exercise02,这是第二个案例,注意写的时候,一个比较好的方式就是先把代码放上去,先做一个思路的分析,最简单的内容先做一个分析,首先看到题目有三个变量,这三个变量要写死的,那么就不用从控制台输入了,所以说首先应该定义三个变量;第二个可以看到题目中说如果……如果……如果……所以说这里面有三个分支,因此要用多分支完成使用;又一个思路出来了,第三点,分析一下,可以在题目中看到,频繁的用到了 b2- 4ac,那既然如此,应该把 b2- 4ac 做成一个中间变量,或者说把它算出来直接使用,而不要每次都去重新计算一次,因为将来做大数据计算,反复这样计算的话,假设这个统计的量很大,性能就会变得很低,因此 b2- 4ac 会频繁地使用到,因此可以先计算出来,计算并保存到一个变量中,这就是很好的一个思路,最后判断并执行判断,写业务逻辑好了,那么现在分析完毕后,就开始了执行。
package com. atguigu. chapter04. ifesle
object Exercise02 {
def main(args: Array[String]): Unit = {
/*
求 ax2 +bx+c=0方程的根。a,b,c 分别为函数的参数,如果: b2-4ac>0,则有两个解; b2-4ac=0,则有一一个解; b2-4ac<0, 则无解; [a=3 b=100 c=6]
提示1: x1=(-b+sqrt(b2- 4ac))/2a
X2=(-b-sqrt(b2- 4ac))/2a
提示2: sqrt(num)在 scala 包中(默认引入的)的 math 的包对象有很多方法直接可用。
思路的分析
1.定义三个变量 a,b,c
2.使用多分支完成
3.因为 b2-4ac 会多次使用,因此我们可以先计算,并保持到变量中
4.判断,写逻辑
*/
代码如下:
val a=3
val b = 100
val c = 6
val m=b*b-4*a* C
va
r
x1 = 0.0
var x2= 0.0
if (m > 0) {
x1=(-b+sqrt(m))/2*a
X2=(-b-sqrt(m))/2*a
println("
有两个解
x1="+x1.formatted("%.2f")+"x2="+ x2.
formatted("%.2f"))
} else if(m==0)
x1=(-b + sqrt(m))/2* a
println("有一个解x1="+ x1)
} else {
println(“
无解
”)
}
}