在switch语句中出错,Javascript

时间:2015-03-17 20:51:32

标签: javascript switch-statement

我有一个函数应该返回一个结果,取决于一个已处理的黑杰克手。我使用了一个switch语句,虽然我不确定你可以在函数中使用多个开关。无论如何,我得到一个错误,说“失踪;在第一个'案例'中第一个'结果'文本之后的陈述之前。这段代码是我所教的,所以我不确定我哪里出错了。拜托,请你给我一个暗示或者什么?修道院,托马斯。

function printResult(playResult, dealResult) {
var text = "";
switch(playResult) {
    case (playResult == 21) : result "black jack";
    break;
    case (playResult > 21) : result "busted";
    break;
    case (playResult < 21) : result "safe";
    break;
}

switch(dealResult) {
    case (dealResult < 17) : result "safe";
    break;
    case (dealResult == 17 && < 21) : result "stop";
    break;
    case (dealResult == 21) : result "black jack";
    break;
}

return result;
}

var result = "Player: " + playResult + ", Dealer: " + dealResult;


ANSWER = (printResult(5+9+10, 6+3+7));

4 个答案:

答案 0 :(得分:1)

也许您希望结果是变量赋值?

result = "black jack"

或者可能是回归?

return "black jack"

答案 1 :(得分:0)

您必须删除开关块内的所有playResult变量。

此外,开关不支持高于或低于,因此if更适合这种情况。

function printResult(playResult, dealResult) {

  var result;

  if(playResult == 21) {
    result = "black jack";
  } else if(playResult > 21) {
    result = "busted";
  } else {
    result = "safe";
  }

  if(dealResult < 17) {
    result = "stop";
  } else if(dealResult == 17 && dealResult < 21) {
    result = "stop";
  } else {
    result = "black jack";
  }

  return result;
}

var result = "Player: " + playResult + ", Dealer: " + dealResult;

ANSWER = (printResult(5+9+10, 6+3+7));

这是更接近的,但你的逻辑仍然存在问题。

答案 2 :(得分:0)

看起来你正在尝试做什么&#34;如果逻辑&#34;在案件陈述中;这不是一个开关的工作原理。一个开关将采用dealResult的值并进行直接比较。

switch(dealResult)
{
    case 21: //dealResult MUST be 21
       result = 'blackjack!'
       break;
    case 20: //dealResult MUST be 20
       //etc..
       break;
    case >20: //not valid, will break
}

据我所知,如果你需要做&gt;和&lt;比较,你应该使用if - &gt;别阻止。

答案 3 :(得分:0)

看看你的功能,即使你让开关工作,我也不认为逻辑是你的目标。

如果该功能的目的是告诉你谁赢了游戏,那么你的名字意味着结果,那么你需要先把规则放下..让我们只是为了可读性而把它写成伪...

如果任一玩家有二十一点,请查看以下内容

  1. 玩家二十一点到经销商二十一点=推(画)
  2. 玩家二十一点到经销商任何事情=玩家获胜
  3. 玩家任何经销商Blackjack = Dealer Win
  4. 然后检查一个人是否破产,赢得一个必须持有的球员

    1. 播放器&gt; 21 =经销商获胜
    2. 播放器&lt; = 21和经销商&gt; 21 =玩家赢了
    3. 之后,我们可以进行简单的检查。

      1. 玩家==经销商=推送
      2. 播放器&gt;经销商=玩家获胜
      3. 播放器&lt;经销商=经销商赢
      4. 您无法真正有效地使用switch语句来执行此操作。你可以“使用它”但是对于这样的事情,如果其他就足够了。

        function blackJackWinnerIs(player, dealer)
        {
           if((player == 21) || (dealer==21))
           {
              if(player > dealer)
                 return "Player";
              else if (player < dealer)
                 return "Dealer";
              else
                 return "Push";
           }
           else if(player > 21) 
              return "Dealer";
           else if(dealer > 21) // already checked if player<=21
              return "Player";
           else if(player > dealer)
              return "Player";
           else if(dealer > player)
              return "Dealer";
           else return "Push";
        }
        var hands = [
           {player:21,dealer:21},
           {player:20,dealer:21},
           {player:21,dealer:17},
           {player:22,dealer:17},
           {player:17,dealer:22},
           {player:19,dealer:18},
           {player:18,dealer:20},
           {player:20,dealer:20}
        ];
        for(var i=0; i<hands.length;i++)
        {
           var winner = blackJackWinnerIs(hands[i].player,hands[i].dealer);
           console.log("Player:",hands[i].player," Dealer:",hands[i].dealer," => Winner:",winner);
        }
        

        这是有用的..但它不能保护你免受不良输入,例如如果你不小心传入了两个空值,你会得到一个“推”结果,你应该发出错误或者让游戏无效......但那就是你。