0

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

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
  }
}
4

1 回答 1

1

如果你正确缩进代码,你会很快看到问题

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 == prevcheck 在 else 里面,后面应该有一个括号print " Down"
  • 你没有定义 prev
  • n 在这里做什么?
  • 你想让你的退出条款做什么?finished永远不能设置为true,因为您将高于/低于/相同。没有第 4 条。
  • 你永远不会改变prev
  • 您在打印行有语法错误
于 2015-07-16T19:03:19.583 回答