第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > scala(三):流程控制-分支控制 嵌套循环 for while do…while循环 循环中断 多支循环

scala(三):流程控制-分支控制 嵌套循环 for while do…while循环 循环中断 多支循环

时间:2019-03-05 12:44:28

相关推荐

scala(三):流程控制-分支控制 嵌套循环 for while do…while循环 循环中断 多支循环

目录

流程控制

分支控制

嵌套分支

for循环控制

while和do…while循环控制

循环中断

多重循环

流程控制

分支控制

分支控制可以使程序有选择的执行,分支类型有:单分支、双分支、多分支

单分支

基本语法:

if (条件表达式) {执行代码块}

object Test01 {def main(args: Array[String]): Unit = {println("input age:")var age = StdIn.readShort()if (age < 18) {println("年轻人!!!")}}}

双分支

基本语法:

if (条件表达式) {执行代码块 1} else {执行代码块 2}

object Test01 {def main(args: Array[String]): Unit = {println("input age:")var age = StdIn.readShort()if (age < 18) {println("年轻人!!!")} else {println("成年人!!!")}}}

多分支

基本语法:

if (条件表达式 1) {执行代码块 1} else if(条件表达式 2){执行代码块 2} …………else {执行代码块 n}

object Test01 {def main(args: Array[String]): Unit = {println("input age:")var age = StdIn.readShort()if (age < 14) {println("儿童!!!")} else if (age >= 14 && age < 22) {println("青年!!!")} else if (age >= 22 && age < 60) {println("中年!!!")} else {println("老年!!!")}}}

其他if else说明:

object Test01 {def main(args: Array[String]): Unit = {println("input age:")var age = StdIn.readShort()//Scala中if else表达式是有返回值的,具体返回值取决于满足条件的代码体的最后一行内容val a:Any = if (age < 14) {"儿童!!!"} else if (age >= 14 && age < 22) {"青年!!!"} else if (age >= 22 && age < 60) {"中年!!!"} else {"老年!!!"}println(a)println("input age:")var age2 = StdIn.readShort()//Scala中返回值类型不一致,取它们共同的祖先类型val b:Any = if (age2 < 14) {"儿童!!!"} else if (age2 >= 14 && age2 < 22) {"青年!!!"} else if (age2 >= 22 && age2 < 60) {"abcdefg"} else {"10000"}println(b)//Java中的三元运算符可以用if else实现//如果大括号{}内的逻辑代码只有一行,大括号可以省略。// 如果省略大括号,if只对最近的一行逻辑代码起作用println("input age:")var age3 = StdIn.readShort()val c : Any = if (age3 > 18) "成年人" else "儿童""啦啦啦!没有用了!"println(c)}}

嵌套分支

在一个分支结构中完整的嵌套另一个完整的分支结构,里面的分支的结构称为内层,外面的分支结构称为外层,嵌套分支不要超过3层。

基本结构:

if () {if () {} else {}}

object Test01 {def main(args: Array[String]): Unit = {println("input age:")var age = StdIn.readShort()//Scala中if else表达式是有返回值的,具体返回值取决于满足条件的代码体的最后一行内容val a:Any = if (age < 14) {"儿童!!!"} else {if (age >= 14 && age < 22) {"青年!!!"} else {if (age >= 22 && age < 60) {"中年!!!"}}}println(a)}}

for循环控制

Scala也为for循环提供了非常多的特性,这些for循环的特性被称为for推导式或for表达式。

object ForTest {def main(args: Array[String]): Unit = {//范围数据循环(To)//前后闭合for (i <- 1 to 3) {println(i + "哒哒哒")}println("========")//范围数据循环(Until)//前闭后开for (i <- 1 until 3) {println(i + "啵啵啵")}println("========")//循环守卫for (i <- 1 to 5 if i != 2) {println(i + "啦啦啦")}println("========")//循环步长//输入1-10的奇数for (i <- 1 to 10 by 2) {println("i=" + i)}println("========")//嵌套循环for (i <- 1 to 3; j <- 1 to 3) {println("i=" + i + "j=" + j)}println("========")//引入变量for (i <- 1 to 3; j = 3 - i) {println("i=" + i + "j=" + j)}println("========")//循环返回值val a = for (i <- 1 to 3) yield {i * 2}println(a)println("========")//倒序打印for (i <- 1 to 3 reverse) {println(i)}}}

while和do…while循环控制

while

基本语法:

循环变量初始化while (循环条件) {循环体(语句)循环变量迭代}

说明:

1)while循环先判断再执行;

2)循环条件返回一个布尔值;

3)while语句没有返回值,整个while语句的结果是Unit类型();

4)while中没有返回值,当要用该语句来计算并返回结果时,要不可避免的使用变量,而变量需要声明在while循环的外面,就等同于循环的内部对外部的变量造成了影响。不推荐使用该循环。

object WhileAndDoWhile {def main(args: Array[String]): Unit = {var i = 0while (i < 5) {println("嘿嘿!大笨蛋!!!")i += 1 //i = i + 1}}}

do…while

基本语法:

循环变量初始化;do{循环体(语句)循环变量迭代} while(循环条件)

说明:

1)循环条件是返回一个布尔值的表达式;

2)do..while循环是先执行,再判断;

object WhileAndDoWhile {def main(args: Array[String]): Unit = {var j = 0do {println("嘿嘿!又是一个大笨蛋!!!")j += 1} while (j < 5)}}

循环中断

Scala内置控制结构特地去掉了break和continue是为了更好的适应函数式编程,推荐使用函数式的风格解决break和continue的功能而不是一个关键字。Scala中使用breakable控制结构来实现break和continue功能。

import scala.util.control.Breaksimport scala.util.control.Breaks._object BreakableTest {def main(args: Array[String]): Unit = {//采用异常的方式退出循环try {for (e <- 1 to 5) {println(e)if (e == 4) throw new RuntimeException}} catch {case ee =>}println("正常结束循环!")}//采用scala自带的函数退出循环Breaks.breakable(for (e <- 1 to 5) {println(e)if (e == 4) Breaks.break()})println("正常结束循环!")//对break进行省略breakable {for (e <- 1 to 5) {println(e)if (e == 4) break}}println("正常结束循环!")//跳过continuefor (e <- 1 to 5) {if (e % 2 == 1) {println(e)} else {println("continue")}}println("========")}

多重循环

基本说明:

1)将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for,while,do…while均可以作为外层循环和内层循环。建议一般使用两层,最多不要超过 3 层;

2)设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次。

典型案例:99乘法表

object Test02 {def main(args: Array[String]): Unit = {for (i <- 1 to 9) {for (j <- 1 to i) {print(j + "*" + i + "=" + (j * i) + "\t")}println()}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。