首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >计算单词的拼写分数

计算单词的拼写分数
EN

Stack Overflow用户
提问于 2011-10-31 02:17:59
回答 7查看 4.6K关注 0票数 1
代码语言:javascript
复制
letter = prompt("Enter a word please");
letter = letter.toUpperCase();

// define letters and respective scores
alphabet = ['A','B','C','D','E','F','G','H','I','J','K','L','M', 'N','O','P','Q',
'R','S','T','U','V','W','X','Y','Z']
alphabetScore = [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]

// start sum
sum=0

for (i=0; i<alphabet.length; i++)
{
switch(letter) 
        {
        case (alphabet[i]): sum+=alphabetScore[i]; break;
        default: sum=sum+0;
        }
}   
alert (sum);

我正在尝试构建一个计算单词拼写分数的程序。但是每次我输入一个单词,它都会返回0。为什么会发生这种情况?很抱歉连续的JS帖子-我是语言新手,一直在接受额外的实际任务,以提高我对该语言的知识。在本例中,我一直在尝试在for循环中使用switch语句。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-10-31 02:28:07

尝试将字母及其拼写点值之间的关系建模为关联数组,而不是两个并行数组:

代码语言:javascript
复制
var word = prompt("Enter a word please");
word = word.toUpperCase();

scores = { 'A' : 1, 'B' : 3, 'C' : 3, /* ... */ 'Z' : 10 };

var sum = 0;
for (var i = 0; i < word.length; ++i) {
    sum += scores[word.charAt(i)] || 0;
}

alert(sum);
票数 2
EN

Stack Overflow用户

发布于 2011-10-31 02:27:17

这不是使用switch的适当方式。

switch通常被用来替代几个相应的if ... else if ... else if ... else。事情就是这么简单。在本例中,您只需要在循环中使用一条if语句。实际上你需要一个双循环。

代码语言:javascript
复制
for each letter in the word
  for each letter in the alphabet
    if they match
      increment score

祝好运。

票数 2
EN

Stack Overflow用户

发布于 2011-10-31 02:40:57

您可以通过以对象的形式定义分数来避免循环遍历单词中每个字母的整个字母表(也称为关联数组)。此外,您的"letter“变量实际上是整个单词,因此您需要逐个遍历字母。下面将这两个概念结合起来:

代码语言:javascript
复制
var word = prompt("Enter a word please");
word = word.toUpperCase();

var alphabet = {
    A: 1,
    B: 3,
    C: 3,
    D: 2,
    E: 1,
    F: 4,
    G: 2,
    H: 4,
    I: 1,
    J: 8,
    K: 5,
    L: 1,
    M: 3,
    N: 1,
    O: 1,
    P: 3,
    Q: 10,
    R: 1,
    S: 1,
    T: 1,
    U: 1,
    V: 4,
    W: 4,
    X: 8,
    Y: 4,
    Z: 10
}

var letter, i, sum = 0;
for (i = 0; i < word.length; i++) {
    letter = word[i];
    sum += alphabet[letter];
}
alert(sum);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7946817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档