0

文字列キーに関連付けられているInt値を取得しようとしているだけです。私は得る:

error: type mismatch;
found   : Char
required: String
    score += tiles(letter)

ここの私のコードから:

val tiles = Map[String, Int](
    "a" -> 1,
    "b" -> 3,
    "c" -> 3,
    "d" -> 2
    // etc.
)

def main(args: Array[String]) {
    println("\nScrabble Calculator 1.0")
    println("Enter words on the commandline.")
    println("Use a '_' character for blank tiles.\n")

    for (w <- args)  // loop through each word
        if (w.length < 2)
            println(w + ": one-letter words disallowed in Scrabble")
        else
            calculate(w)
}

def calculate(w: String) {
    var score = 0
    for (letter <- w)
        score += tiles(letter)
    println(w + ": " + score + " points")
}

の代わりに「a」または「b」を実行すると、正常にletter機能します(1、3などを返します)。

4

2 に答える 2

1

ああ、うわあ。単純な構文の問題でした。" の代わりに ' を使用すると、Char として解釈されます。

val tiles = Map[Char, Int](
    'a' -> 1,
    'b' -> 3,
    'c' -> 3,
    'd' -> 2,
于 2012-09-03T21:19:39.183 に答える
1

tilesですMap[String, Int]

calculateString引数を取りますw。個々の文字を から に引き出すwのでletterletterタイプはCharです。

次に、 を検索しようとしletterますtilesletterが必要なChar場合はです。これはまさに、コンパイラがそのエラー メッセージで伝えていることです。tilesString

于 2012-09-04T00:03:26.047 に答える