0

私はscalaを初めて使用しますが、次のコードに問題があります:

var c:Int = 0
var j:Int = 0

for( c <- 0 to 100){
  for( j <- 0 to 100){

   /* Check if jth bit in c is set,
    if( (c & (1<<j)) )  // this line is the line where i get the error
    xs :+ (ys(j))   // this is copying element j from list ys to list xs     
  }
}

私が得るエラーは次のとおりです。タイプの不一致。found : Int 必須: Boolean

コード (c & (1<<j)) は、左に 1 ビット j ビットシフトし、その結果を変数 c の int とビットごとに論理積して、ブール値の結果を取得する必要があります。

私が何か間違ったことをしている可能性は十分にあります..私はScalaを3日間学んでいますが、Javaで非常に錆びています。

どんな助けでも大歓迎です

4

2 に答える 2

1

C (または C++) とは異なり、Scala のifステートメント (Java と同様) はBoolean式のみを受け入れ、整数型から への暗黙的な型昇格はありませんBoolean。したがって、あなたが望むものを明示し、次のように置き換える必要がありif( (c & (1<<j)) )ますif( (c & (1<<j)) != 0)

于 2013-04-03T05:52:41.803 に答える