Intro
介绍分支控制和循环相关内容。
分支控制if-else
单分支
if(条件表达式){
执行代码块
}
if-else的单分支可以赋值给变量
var x= 10
var s =if(x>0) 1 else -1
println(s"s=${s}")
s=1
x: Int = 10
s: Int = 1
如果混合类型表达式,返回的结果类型为Any
var x= 10
var s =if(x>0) "aaa" else -1
println(s"s=${s}")
s=aaa
x: Int = 10
s: Any = aaa
双分支
if(条件表达式){
执行代码块1
}else{
执行代码块2
}
多分支
if(条件表达式1){
执行代码块1
}else if(条件表达式2 ){
执行代码块2
}
…
else{
执行代码块n
}
完成一个demo,Jupyter中文报错,凑合用吧。逻辑如下:
根据淡旺季的月份和游客年龄,打印不同票价。
4-10月 旺季:
- 成人adult(18-60):全票(60元)
- 儿童child(<18):半价(30元)
- 老人(>60):1/3(20元)
淡季:
- 成人:40元
- 其他:20元
// import scala.io.StdIn
// println("This month:")
// val month = StdIn.readInt()
// println("Vistor age:")
// val age = StdIn.readInt()
def ticketPrice(month:Int,age:Int){
val ticketprice = 60
println(s"This month : ${month};Vistor age:${age}")
if(month<=10 & month>=4){
if (age<18){
print(s"Price: ${ticketprice/2}")
}else if(age>=18 & age<=60){
print(s"Price: ${ticketprice}")
}else{
print(s"Price: ${ticketprice/3}")
}
}else{
if(age>=18 & age<=60){
print(s"Price: ${ticketprice/2}")
}else{
print(s"Price: ${ticketprice/3}")
}
}
}
ticketPrice: (month: Int, age: Int)Unit
ticketPrice(10,20)
This month : 10;Vistor age:20
Price: 60
分支结构
类似switch分支结构,match-case,后面再说。
循环
for循环
范围数据的循环,前后闭合
for(i<-1 to 3){
println(s"i=${i}")
}
i=1
i=2
i=3
until方法,前闭后开
for(i<-1 until 3){
println(s"i=${i}")
}
i=1
i=2
while循环
while(循环条件){
循环体(语句)
循环变量迭代
}
dowhile循环
do{
循环体(语句)
循环变量迭代
}while(循环条件)
- while先执行判断,再执行
- dowhile先执行再判断
var i:Int=6
while(i<=5){
println(s"i= ${i}")
i=i+1
}
i: Int = 6
var i:Int=6
do{
println(s"i= ${i}")
i=i+1
}while(i<=5)
i= 6
i: Int = 7
嵌套循环
两个demo测试
for(i<- 1 to 3;j<- 1 to 2){
println(s"i=${i};j=${j}")
}
i=1;j=1
i=1;j=2
i=2;j=1
i=2;j=2
i=3;j=1
i=3;j=2
打印九九乘法表
for(i<- 1 to 9){
for(j<- 1 to i){
printf("%d*%d=%d\t",j,i,i*j)
}
println()
}
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
循环的中断
printf("%d",13)
13
break
import util.control.Breaks._
import util.control.Breaks._
var n = 1
breakable{
while(n<=10){
n+=1
println(s"n=${n}")
if(n==6){
break()
}
}
}
n=2
n=3
n=4
n=5
n=6
n: Int = 6
continue
Scala内置控制结构也没有continue,可以用ifelse实现类似功能
for(i<-1 to 5 if(i!=2&&i!=3)){
println(s"i=${i}")
}
i=1
i=4
i=5
2020-01-13 于南京市江宁区九龙湖