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

それを修正する方法について2つの解決策がありますが、期待どおりに機能しない理由は次のとおりです。scalaの条件式は、ブロック内のを期待しています。複数の式 (そこにあるように) を 1 つの複合式にする方法はいくつかあります (質問に対する他の回答でそれらの例を見ることができます)。ifelse

于 2013-03-25T09:01:12.380 に答える
-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 に答える