Java 如何计算一个单词的拼字分数

Java 如何计算一个单词的拼字分数,java,Java,我正试图写一个程序来计算一个单词的分数,基于拼字游戏 分数基于上图 我目前已经编写了一个函数,我的理想目标是使用它,让用户输入一个单词来计算分数 int scrabbleScore(String Word) { int score = 0; for (int i = 0; i < Word.length(); i++){ char calculatedLetter = Word.at(i); switch (c

我正试图写一个程序来计算一个单词的分数,基于拼字游戏

分数基于上图

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

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;
int拼字游戏分数(字符串字){
智力得分=0;
for(int i=0;i

为什么我对任何单词的评分都是0分?

你可以把它缩短一点,准备一天多语言,只需稍加修改

std::string word;
std::cin>>word;
std::cout<<"Your Score :" << scrabbleScore(word) ;
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;
}
int拼字游戏分数(字符串字)
{
智力得分=0;
char EnglishCoreTable[26]={1,3,3,2,1,4,2,4,1,8,5,1,3,1,1,3,10,1,1,1,1,1,1,4,8,4,10};
for(自动字母:Word)
{
如果(字母>='A'&&Letter将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) {
private static int scrabbleScore(字符串字){
智力得分=0;
字符串大写=Word.toUpperCase();
for(int i=0;i
你似乎有一个函数,到底是什么问题?即使你在这种情况下没有达到极限,我还是想告诉人们,当我看到这么大的开关案例时,如果你有一个包含1023个以上案例的开关,它会产生未定义的行为。这给了我一个错误,函数调用中的参数太少了,我们应该这样做吗猜猜看?我们现在应该猜猜哪一行出错了吗?我们应该猜猜应该有多少个参数吗?今天是你的幸运日:你将学习一些编程知识,并学会一些基本的提问技巧。后者比前者更能帮助你的生活。你只检查大写字母。如何你知道参数应该是什么类型的吗?你读过作业了吗?@RobKennedy现在你会说OP可以有一个名为
String
类。当然。我的印象是自定义字符串类在入门编程类中非常常见。我的函数似乎不是计算分数,它只是为每一个单词。@Hayde这可能是因为你需要检查小写字母看起来很好,而且更整洁。假设这个单词中有一个“-”,我怎么能让这个单词不返回任何分数呢?这是一个很好的英语ASCII的简洁解决方案。但是这对多语言有什么准备呢?如果它看起来像是阻止其他语言使用它的话这里有一个隐含的假设,即字母表中的所有字符都连续地存在于顺序空间中。但是许多语言都有重音符号等,这样就不能像您在这里所做的那样使用数组索引。@hayde您可以在else情况下处理特殊字符。@pp是的,它不是完全的多语言,而是查表的思想。它可能会改变在运行时,该表适用于任何语言,ANSI为256字节,unicode为64kb。如果移动超过26个字符,我更愿意在运行时从拼字分数创建查找表。我认为您忽略了回答这个问题。请记住,这是堆栈溢出;代码审阅是一个单独的站点。您所说的“imp”是什么意思?Implementation.Apols用于含糊不清的缩写缩写::-+1用于解决问题中描述的问题,但-1用于暗示以一种完全不同的语言重新实现项目。是的!我在autopilot上,刚刚选择all并将其粘贴到emacs中并运行javac。明显的语法线索如std::cout
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) {