Groovy 使用循环和布尔值进行练习

Groovy exercise with loops and booleans

我是 Groovy 的新手,正在尝试回答下面的练习。我看不到错误并且不起作用: 该程序采用一系列数字。如果当前数与前一个数相同,则iy表示"Same",如果当前数大于前一个数,则表示"Up",如果小于前一个数,则表示"Down"。它对第一个数字完全没有反应。

println " Please enter a number: "
String s = System.console().readLine()
int num = Integer.parseInt(s)
int prev = 0
def finished = false
while(!finished) {
    println "and another: "
    s = System.console().readLine()
    int curr = Integer.parseInt(s)
    if (curr != 1) {
        if (curr > prev) {
           print " Up "
        } else if (curr < prev) {
           print " down "
        } else {
           print "Same "
        }
        prev = curr
    } else {
       finished = true
  }
}

如果您正确缩进代码,您很快就会发现问题

boolean finished = false
while(!finished) {
    int curr = 1
    println "Please enter a series of numbers: "
    String s = System.console().readLine()
    int n = Integer.parseInt(s)
    if (n != 1) { 
        n = curr + prev
        if (curr > prev) {
           print " Up"
        } else {
           print " Down"
           if (curr == prev) {
               print = " Same"
           } else {
               finished = true
           }
        }
    }
}

这段代码有很多问题。

  • curr == prev检查在else里面,print " Down"
  • 后面应该有个括号
  • 你没有定义prev
  • n 在这里做什么?
  • 你想怎样制定你的退出条款? finished 永远不能设置为 true,因为你要么是 above/below/same。没有第四条。
  • 你永远不会改变prev
  • 打印行有语法错误