2013-03-25 47 views
2

我写了下面的简单代码:错误:';'预期,但“其他”发现

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

虽然它似乎是正确的我,有错误。上面的代码有什么问题?

+0

不要忘记upvote /接受有益的答案。 – sschaef 2013-03-25 11:52:23

回答

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); 
} 
+0

它给了我一个不同的错误:递归方法逗号需要结果类型 – user2206758 2013-03-25 08:59:58

+0

@ user2206758好,然后给它一个类型。 'def Commas(n:Long):Unit = ...' – folone 2013-03-25 09:09:22

-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) 
} 
+0

它给了我同样的错误... – user2206758 2013-03-25 08:57:14

+0

-1:错误的答案;在一行中添加几个表达式不会产生单个表达式。 – sschaef 2013-03-25 11:50:26

+0

尴尬:-( – nilo 2013-03-27 10:50:30

0

虽然,你已经有了如何解决两种解决方案,这里就是为什么它不工作,你指望它:在斯卡拉Conditional expressions预计expressions在他们的ifelse块。有几种方法可以将几个表达式(比如你在那里)组合成一个复合表达式(你可以在你的问题的其他答案中看到这些表达式的例子)。

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) 
} 
+0

谢谢你!它完美的作品! – user2206758 2013-03-25 09:45:01

0

免责声明:本解决方案是类似的错误,但不一样的情况。

我面临同样的错误。我做的错误是,我复制粘贴命令提示符代码到文件,并忘记删除该函数行中的管道(|)字符,并得到相同的错误。如果你因为这个原因来到这个页面,现在你可以修复它。请享用。

相关问题