3

我写了以下简单的代码:

def Commas(n: Long) = {
  if (n >= 1000)
    Commas(n/1000)
    print(","+ n%1000/100 + n%100/10 + n%10)
  else
    print(n%1000/100 + n%100/10 + n%10)
}

虽然这对我来说似乎是正确的,但有一个错误。上面的代码有什么问题?

4

5 回答 5

5

If...else...语法需要一个语句。您可以使用周围的代码块来确保您的代码按预期工作。类似的东西(另请注意,您必须指定返回类型Unit或仅删除=符号):

def Commas(n: Long) {
  if (n >= 1000) {
    Commas(n/1000)
    print(","+ n%1000/100 + n%100/10 + n%10)
  }
  else 
    print(n%1000/100 + n%100/10 + n%10)
}
于 2013-03-25T09:14:44.647 回答
1

尝试这个:

def Commas(n: Long) = {
if (n >= 1000) {
    Commas(n/1000)
    print(","+ n%1000/100 + n%100/10 + n%10);
}
 else {
    print(n%1000/100 + n%100/10 + n%10);
}
于 2013-03-25T08:45:59.207 回答
0

虽然,您有两种解决方法来解决它,但这就是为什么它不能按预期工作的原因:scala中的条件表达式期望它们的and块中的表达式。有几种方法可以将多个表达式(就像您在那里一样)制作成一个复合表达式(您可以在问题的其他答案中看到这些示例)。ifelse

于 2013-03-25T09:01:12.380 回答
0

免责声明:此解决方案适用于类似错误但不完全相同的情况。

我遇到了同样的错误。我犯的错误是,我将命令提示符代码复制粘贴到文件中,但忘记删除函数行中的竖线 (|) 字符并得到相同的错误。如果你因为这个原因来到这个页面,现在你可以修复它。享受。

于 2017-06-20T20:07:35.427 回答
-1

或者试试这个:

def Commas(n: Long) = {
    if (n >= 1000)
        Commas(n/1000); print(","+ n%1000/100 + n%100/10 + n%10)
     else 
        print(n%1000/100 + n%100/10 + n%10)
}
于 2013-03-25T08:50:57.193 回答