ScalaNote03-程序流程控制

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 于南京市江宁区九龙湖

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值