如何计算单词的拼字游戏分数

时间:2013-09-24 14:06:06

标签: java

我正在尝试根据游戏Scrabble enter image description here

编写一个计算单词得分的程序

分数基于上图。

我目前编写了一个函数,我的理想目标是使用它并让用户输入一个单词来计算得分。

int scrabbleScore(String Word) {
        int score = 0;
        for (int i = 0; i < Word.length(); i++){
            char calculatedLetter = Word.at(i);
            switch (calculatedLetter) {
                case 'A':
                case 'E':
                case 'I':
                case 'L':
                case 'N':
                case 'O':
                case 'R':
                case 'S':
                case 'T':
                case 'U':
                    score +=1; break;
                case 'D':
                case 'G':
                    score +=2; break;
                case 'B':
                case 'C':
                case 'M':
                case 'P':
                    score +=3; break;
                case 'F':
                case 'H':
                case 'V':
                case 'W':
                case 'Y':
                    score +=4; break;
                case 'K':
                    score +=5; break;
                case 'J':
                case 'X':
                    score +=8; break;
                case 'Q':
                case 'Z':
                    score +=10; break;
                default: break;
            }
        }
        return score;

为什么这对任何单词都给我0分?

3 个答案:

答案 0 :(得分:1)

你可以缩短一点时间,为一天的多语言做好准备,只需要很少的修改。

int scrabbleScore(string Word)
{
    int score = 0;
    char EnglishScoreTable[26] = { 1, 3, 3, 2, 1, 4, 2, 4, 1, 8, 5, 1, 3, 1, 1, 3, 10, 1, 1, 1, 1, 4, 4, 8, 4, 10 };
    for (auto Letter : Word)
    {
        if (Letter >= 'A' && Letter <= 'Z')
        {
            score += EnglishScoreTable[Letter - 'A'];
        }
        else
        {
            // error in input 
        }
    }
    return score;
}

答案 1 :(得分:0)

std::string word;
std::cin>>word;
std::cout<<"Your Score :" << scrabbleScore(word) ;

此外,

int scrabbleScore(String Word)
                  ^ this should be string from std namespace,

答案 2 :(得分:0)

将imp改为:

private static int scrabbleScore(String Word) {
    int score = 0;
    String upperWord = Word.toUpperCase();
    for (int i = 0; i < upperWord.length(); i++){
        char calculatedLetter = upperWord.charAt(i);
        switch (calculatedLetter) {
相关问题