首页 > 解决方案 > Freecodecamp - 数牌

问题描述

我知道有很多方法可以完成这个挑战,我可以简单地通过不同的方法来通过要求,但是我很难理解我的代码有什么问题。

挑战 - https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/counting-cards/

任何帮助将非常感激。

    var count = 0;

    function cc(card) {
      // Only change code below this line

      if (card < 7){
        count++;
      } else if (card < 10){
        count+=0;
      } else (count--;)

      if (count > 0){
        return count + " Bet";
      } else (
        return count + " Hold";
      )
      // Only change code above this line
    }

    // Add/remove calls to test your function.
    // Note: Only the last will display
    cc(2); cc(3); cc(7); cc('K'); cc('A');

标签: javascript

解决方案


首先,当您尝试执行代码时,您应该看到一个语法错误,指向(count--;). 这样做的原因是:else期望一个语句,如果它看到一个括号则意味着该语句是一个表达式,并且在一个表达式中,分号不能出现在括号内(这是相当简化的)。正确的写法是不带括号(通常不赞成) as else count--;,或者带花括号:else { count--; }

当您修复该错误时,还会出现另一个相同类型的错误,因为您似乎系统地在else.

在那之后,你的代码就可以工作了。有问题的比较card, 可以是一个字母或一个数字,与一个整数,但它巧合地按照您希望的方式工作(因为'K','Q'并且'J'恰好被评估为大于710。)最好不要依赖这样的魔法,并且有一个字母和值之间的翻译表 - 或者至少,如果你要依赖魔法,请发表评论,让读者知道你意识到了魔法。此外,count+=0是一个无效的声明,它什么都不做,并且可以被忽略。这会给你留下一个空的else if,但这不是一个错误。但是,如果您有if (card < 7) { count--; } else if (card >= 10) { count++; }.


推荐阅读