当前位置:网站首页>Scala——While和do..While循环控制
Scala——While和do..While循环控制
2022-08-07 08:25:00 【Hyf 。】
目录
While循环控制
基本语法
循环变量初始化
while(循环条件){
循环体(语句)
循环变量迭代
}
说明:
(1) 循环条件是返回一个布尔值的表达式
(2) while循环是先判断再执行语句
(3)与for语句不同,while语句没有返回值,即整个while语句 的结果是Until类型()
(4) 因为while中没有返回值,所以当要用该语句来计算并返回结果时,就不可避免的使用变量,而变量需要声明在while循环的外部,那么就等同于循环的内部对外部的变量造成了影响,所以不推荐使用,而是推荐使用for循环。
案例实操
package Chapter04
object Test_05WhileLoop {
def main(args: Array[String]): Unit = {
var a = 1
while (a <= 10) {
print("a=" + a + ",")
a+=1
}
println()
var b = 1
while (b <= 10) {
print("b=" + b + ",")
b+=1
}
}
}
运行结果

do..While循环控制
基本语法
循环变量初始化;
do {
循环体(语句)
循环变量迭代
}while(循环条件)
说明:
(1)循环条件是返回一个布尔值的表达式
(2)do..while循环是先执行,再判断
案例实操
package Chapter04
object Test_05WhileLoop {
def main(args: Array[String]): Unit = {
var c = 1
do{
print("c=" + c + ";")
c += 1
}while(c<=10)
println()
var d = 10
do{
print("d=" + d + ";")
d -= 1
}while(d>=1)
}
}运行结果

循环中断
基本说明:
Scala内置控制特地去掉了break和continue,是为了更好的适应函数式编程,推荐使用函数式的风格解决break和continue的功能,而不是一个关键字。Scala中使用breakable控制结构来实现break和continue功能。
案例实操
1、采用异常的方式退出循环
2、采用 Scala 自带的函数,退出循环
3、对 break 进行省略 // 把Breaks下所有属性和方法引入import scala.util.control.Breaks._
4、循环遍历 10 以内的所有数据,奇数打印,偶数跳过(continue)
package Chapter04
import scala.util.control.Breaks
import scala.util.control.Breaks._
object Test_06break {
def main(args: Array[String]): Unit = {
//1、采用抛异常的方式,退出循环
try {
for (i <- 0 until 5){
if (i ==3)
throw new RuntimeException
println(i)
}
}catch {
case e: Exception => //什么都不做,只是退出循环
}
println("--------------")
//2、使用Scala中的Breaks类的break方法,实现异常的抛出和捕捉
Breaks.breakable(
for (i <- 0 until 5){
if (i ==3)
Breaks.break()
println(i)
}
)
println("----------------")
breakable(
for (i <- 0 until 5){
if (i ==3)
break()
println(i)
}
)
println("----------------")
for (a <- 1 to 10 ){
if (a % 2 == 1) println("a=" + a )
}
println("----------------")
for (a <- 1 to 10 ){
if (a % 2 == 1) println("a=" + a )
else println("contiune")
}
println("这是循环外的代码")
}
}运行结果


边栏推荐
- 网络互连模型、物理层、数据链路层
- Backpack Theory 01 Backpack
- redis的原理和源码-客户端结构体的介绍和源码解析
- The third bullet of FPGA development: button control LED experiment
- Model fine-tuning transfer learning Finetune method Daquan
- 排序--希尔排序
- [Promise] Promise use / callback hell problem async-await / macro queue and micro queue
- 6.PHP函数、$GET和$POST变量
- HPC Technology: Analysis of MPICH Implementation Principle
- DCDC power solution design stepping on the pit
猜你喜欢

The network layer first
![#yyds Dry Goods Inventory# [Yugong Series] August 2022 Go Teaching Course 004-Go Code Comments](/img/0e/a9e2757b0108621917f43d03ee9c26.png)
#yyds Dry Goods Inventory# [Yugong Series] August 2022 Go Teaching Course 004-Go Code Comments

Web3 参考架构

基于miniprogram-ci的微信小程序的CI以及接入钉钉通知

哈希——开散列

DeFi Prospects: An Overview of Q2 Progress of Mainstream DeFi Protocols

U-Net网络

Jenkins configures automatic packaging

STM32出现波特率不对问题,我们要设定的波特率是9600,而实际的波特率竟然是14400,这是为什么呢?

《C陷阱与缺陷》之“语义”陷阱——数组越界导致的程序死循环问题
随机推荐
VisualVM工具的下载及插件安装
大屏显示之动态词云组件
#yyds干货盘点#【愚公系列】2022年08月 Go教学课程 004-Go代码注释
Why Move will overtake Solidity as the mainstream programming language?
今日睡眠质量记录74分
背包理论之01背包
redis的原理和源码-sentinel哨兵的原理和源码解析(下)
排序---插入排序
ABP 6.0.0-rc.1的新特性
31. 了解什么是 redis 的雪崩、穿透和击穿?redis 崩溃之后会怎么样?应对措施是什么
为什么Move将超越Solidity成为主流编程语言?
redis基础常识、数据类型及基本命令
redis的原理和源码-redis的六种数据类型基本介绍:string、hash、list、set、zset、stream
双向链表的增删查改
【正点原子STM32连载】第七章 认识HAL库 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
DeFi 前景展望:概览主流 DeFi 协议 Q2 进展
力扣:1049. 最后一块石头的重量 II
C学生数据库_读取文件中学生信息1。
架构师杂谈【摘抄】
redis的原理和源码-配置文件解析