我正在尝试根据游戏Scrabble
编写一个计算单词得分的程序分数基于上图。
我目前编写了一个函数,我的理想目标是使用它并让用户输入一个单词来计算得分。
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分?
答案 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) {