当前位置: 首页 > news >正文

【Groovy】流程控制

1 选择结构

        Groovy 中选择结构主要包含 if -else、switch 语句,并且可以返回结果。

1.1 if-else

def score = 85
if (score >= 90) {
    println("优秀")
} else if (score >= 80) {
    println("良好")
} else if (score >= 60) {
    println("及格")
} else {
    println("不及格")
}

        说明:如果 {} 里只有一条语句,可以省略 {},if-else 语句可以嵌套使用,其他流程控制语句也可以嵌套使用。不同于 Kotlin,Groovy 中 if-else 语句不能作为结果判断,即下面的语句是非法的

def score = 85
def res = if (score > 60) "及格" else "不及格"

1.2 switch

        1)简单案例

def grade = 'B'
switch (grade) {
    case 'A':
        println("优秀")
        break
    case 'B':
        println("良好")
        break
    case 'C':
        println("及格")
        break
    default:
        println("不及格")
        break
}

        说明:如果 {} 里只有一条语句,可以省略 {}。不同于 Kotlin,Groovy 中 when 语句不能作为结果判断。

        2)多分支合并

def grade = 'B'
switch (grade) {
    case 'A':
    case 'B':
    case 'C':
        println("及格")
        break
    default:
        println("不及格")
        break
}

2 循环结构

        Groovy 中循环结构主要包含 for、while、do-while 循环结构。另外,continue 语句可以控制跳过某次循环,break 语句可以控制跳出循环体。

2.1 for

        for 循环可以对任何提供迭代器(iterator)的对象进行遍历。

        1)遍历整数范围

for (int i = 1; i < 5; i++) {
    println(i) // 打印: 1、2、3、4
}
for (i in 1..<5) {
    println(i) // 打印: 1、2、3、4
}

        2)遍历数组 / 列表

def items = ["aa", "bb", "cc"]
// def items = ["aa", "bb", "cc"] as String[]
for (item in items) {
    println(item) // 打印: aa、bb、cc
}
items.each {
    println(it) // 打印: aa、bb、cc
}
for (index in items.indices) {
    println("items[$index]=${items[index]}") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
}
items.eachWithIndex { item, index ->
    println("items[$index]=$item") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
}

2.2 while

def i = 0
while(i < 5) {
    println(i)
    i++
}

2.3 do-while

def i = 0
do {
    println(i)
    i++
} while (i < 5)

2.4 continue

        使用 continue 语句,可以跳过循环体中 continue 后面的语句,继续执行下一轮循环。

        1)单层循环

for (i in 1..5) {
    if (i == 3) continue
    println(i) // 打印: 1、2、4、5
}

        2)多层循环

label: for (i in 1..3) {
    for (j in 4..6) {
        if (j == 5) continue label
        println("($i,$j)") // 打印: (1,4)、(2,4)、(3,4)
    }
}

        说明:label 可以修改为任何符合变量命名规范的名字。

2.5 break

        使用 break 语句,可以跳出循环体,继续执行循环体后面的语句。

        1)单层循环

for (i in 1..5) {
    if (i == 3) break
    println(i) // 打印: 1、2
}

        2)多层循环

label: for (i in 1..3) {
    for (j in 4..6) {
        if (j == 5) break label
        println("($i,$j)") // 打印: (1,4)
    }
}

        说明:label 可以修改为任何符合变量命名规范的名字。 

相关文章:

  • 初阶数据结构习题【3】(1时间和空间复杂度)——203移除链表元素
  • C++核心指导原则: 源文件
  • 渲染 101:Maya 项目的高效渲染利器
  • 2025年Linux主力系统选择指南:基于最新生态的深度解析(附2025年发行版对比速查表)
  • LeetCode热题100JS(17/100)第三天|76.最小覆盖子串
  • Sqlserver安全篇之_TLS的证书概念
  • 【LeetCode】131.分割回文串
  • Spring全面详解(基础版)
  • 【uniapp原生】实时记录接口请求延迟,并生成写入文件到安卓设备
  • Linux的诞生:一场自由与协作的技术革命
  • DevOps原理和实现面试题及参考答案
  • Flutter 学习之旅 之 flutter 在 Android 端进行简单的打开前后相机预览 / 拍照保存
  • 自动驾驶测试场景相关概念
  • 【深度学习】循环神经网络案例讲解-基于 PyTorch 的中文歌词生成——RNN,LSTM,GRU 从数据预处理到预测全流程详解
  • 字符函数和字符串函数1
  • Java实现pdf文件压缩(aspose-pdf实现压缩、itextpdf去除aspose-pdf版权水印)
  • 设计模式——过滤器模式在 Spring 中的实践
  • 深度学习开源数据集大全:从入门到前沿
  • Tr0ll: 1靶场渗透测试
  • 基于JAVA+SpringBoot+Vue的前后端分离的职称评审管理系统
  • 网站的分析与设计/网站seo的优化怎么做
  • 哈尔滨市哪里做淘宝网站/国外搜索引擎排名百鸣
  • 即墨疫情最新消息今天封城了/windows优化大师电脑版
  • 青岛电子商务网站建设/百度竞价推广账户
  • 佛山外贸网站建设精英/谷歌广告联盟
  • 做网站需要买网址吗/网络营销服务外包