2013-03-25 75 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

免責聲明:本解決方案是類似的錯誤,但不一樣的情況。

我面臨同樣的錯誤。我做的錯誤是,我複製粘貼命令提示符代碼到文件,並忘記刪除該函數行中的管道(|)字符,並得到相同的錯誤。如果你因爲這個原因來到這個頁面,現在你可以修復它。請享用。

相關問題