while

首发版本:3.00.6

语法

while(conditions){
    statements
}

详情

while 语句会在条件为真时重复执行语句。

请注意:

  • conditions 必须使用 () 包裹。
  • 当 statement 仅有一条语句时,可省略花括号;多条语句时必须使用花括号,否则会报错。
  • 如果 conditions 是 NULL 或者 !NULL,则按照 false 处理。

while 语句先判断条件再执行循环体,因此循环体可能一次都不执行;do-while 语句先执行循环体再判断条件,因此循环体至少执行一次。详见 do-while

例子

// 累加 1 到 100
s = 0
x = 1
while (x <= 100) {
    s += x
    x += 1
}
print s
// output: 5050

continue 用于跳过本次循环体的剩余部分,进入下一次循环判断。在 while 循环中使用 continue 时,递增语句(x += 1)必须放在 continue 之前,否则会导致死循环。

x = 0
while (x < 10) {
    x += 1
    if (x % 2 == 0) continue
    print x
}
// output:
// 1
// 3
// 5
// 7
// 9

while 循环可以嵌套使用,也可以与 do-while、for 循环嵌套使用。

// 打印乘法口诀表
i = 1
while (i <= 9) {
    j = 1
    while (j <= i) {
        print(i + " * " + j + " = " + (i * j))
        j += 1
    }
    i += 1
}

// 生成一个 5x5 的随机矩阵(包含零值和非零值)
// 以下输出为示例,实际运行结果因随机数不同而异
matrix = rand(0..9, 25)$5:5
print "原始矩阵:"
print matrix

// 使用 while 外层遍历行,for 内层处理列:汇总每列元素
row = 0
while (row < matrix.rows()) {
    sum = 0
    for (col in 0:matrix.cols()) {
        val = matrix[row][col]
        if (val != 0) sum += val
    }
    print "第 " + (row+1) + " 列元素之和: " + sum
    row += 1
}

注意:

  • 注意避免死循环:循环条件涉及的变量必须在循环体内被修改,否则循环将无法终止。
  • 当 statement 仅有一条语句时,可省略花括号;多条语句时必须使用花括号,否则会报错。