我写了下面的简单代码:错误:';'预期,但“其他”发现
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)
}
虽然它似乎是正确的我,有错误。上面的代码有什么问题?
我写了下面的简单代码:错误:';'预期,但“其他”发现
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)
}
虽然它似乎是正确的我,有错误。上面的代码有什么问题?
试试这个:
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);
}
它给了我一个不同的错误:递归方法逗号需要结果类型 – user2206758 2013-03-25 08:59:58
@ user2206758好,然后给它一个类型。 'def Commas(n:Long):Unit = ...' – folone 2013-03-25 09:09:22
或者试试这个:
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)
}
它给了我同样的错误... – user2206758 2013-03-25 08:57:14
-1:错误的答案;在一行中添加几个表达式不会产生单个表达式。 – sschaef 2013-03-25 11:50:26
尴尬:-( – nilo 2013-03-27 10:50:30
虽然,你已经有了如何解决两种解决方案,这里就是为什么它不工作,你指望它:在斯卡拉Conditional expressions预计expressions在他们的if
和else
块。有几种方法可以将几个表达式(比如你在那里)组合成一个复合表达式(你可以在你的问题的其他答案中看到这些表达式的例子)。
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)
}
谢谢你!它完美的作品! – user2206758 2013-03-25 09:45:01
免责声明:本解决方案是类似的错误,但不一样的情况。
我面临同样的错误。我做的错误是,我复制粘贴命令提示符代码到文件,并忘记删除该函数行中的管道(|)字符,并得到相同的错误。如果你因为这个原因来到这个页面,现在你可以修复它。请享用。
不要忘记upvote /接受有益的答案。 – sschaef 2013-03-25 11:52:23