Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
switch语句中出错,Javascript_Javascript_Switch Statement - Fatal编程技术网

switch语句中出错,Javascript

switch语句中出错,Javascript,javascript,switch-statement,Javascript,Switch Statement,我得到了一个函数,该函数将根据已处理的Black Jack hand返回一个结果。我为此使用了switch语句,尽管我不确定是否可以在函数中使用多个switch。不管怎样,我得到了一个错误,说'失踪;在第一个“case”中的第一个“result”文本之后的“before”语句。这段代码是我被教过的,所以我不确定哪里出了问题。请你给我一个提示或其他什么好吗?托马斯,雷法兹 function printResult(playResult, dealResult) { var text = ""; s

我得到了一个函数,该函数将根据已处理的Black Jack hand返回一个结果。我为此使用了switch语句,尽管我不确定是否可以在函数中使用多个switch。不管怎样,我得到了一个错误,说'失踪;在第一个“case”中的第一个“result”文本之后的“before”语句。这段代码是我被教过的,所以我不确定哪里出了问题。请你给我一个提示或其他什么好吗?托马斯,雷法兹

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));
函数printResult(playResult、dealResult){
var text=“”;
开关(播放结果){
案例(playResult==21):结果为“黑杰克”;
打破
案例(playResult>21):结果“失败”;
打破
病例(播放结果<21):结果“安全”;
打破
}
开关(结果){
病例(结果<17):结果“安全”;
打破
案例(dealResult==17&&<21):结果“停止”;
打破
案例(dealResult==21):结果为“黑杰克”;
打破
}
返回结果;
}
var result=“玩家:“+playsult+”,庄家:“+dealResult”;
答案=(打印结果(5+9+10,6+3+7));

也许您希望结果是一个变量分配

result = "black jack"
或者是回来

return "black jack"

您必须删除开关块内的所有播放结果变量

此外,交换机不支持高于或低于,因此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));
函数printResult(playResult、dealResult){
var结果;
如果(播放结果==21){
结果=“黑杰克”;
}否则如果(播放结果>21){
结果=“破产”;
}否则{
结果=“安全”;
}
如果(结果<17){
结果=“停止”;
}else if(dealResult==17&&dealResult<21){
结果=“停止”;
}否则{
结果=“黑杰克”;
}
返回结果;
}
var result=“玩家:“+playsult+”,庄家:“+dealResult”;
答案=(打印结果(5+9+10,6+3+7));

这很接近,但您的逻辑仍然存在问题。

看起来您试图在case语句中使用“if logic”;开关不是这样工作的。一个开关将取
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
}

据我所知,如果你需要做>和else块。

看看你的函数,即使你让开关工作,我认为逻辑不是你想要的

如果函数的目的是告诉你谁赢了这场比赛,那么你需要先把规则写下来。。为了可读性,让我们用pseudo编写它

如果任一玩家有21点,请检查以下内容

  • 玩家21点对庄家21点=推(抽)
  • 玩家21点对庄家任何东西=玩家赢
  • 玩家对庄家21点的任何操作=庄家赢
  • 然后检查一个人是否半身像,以赢得一个必须持有的球员

  • 玩家>21=庄家赢
  • 玩家21=玩家获胜
  • 然后,我们可以做简单的检查

  • 玩家=经销商=推
  • 玩家>庄家=玩家赢
  • 玩家<庄家=庄家赢
  • 您不能真正有效地使用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);
    }
    
    功能blackJackWinnerIs(玩家、经销商)
    {
    如果((玩家==21)| |(庄家==21))
    {
    如果(玩家>经销商)
    返回“玩家”;
    否则如果(玩家<经销商)
    返回“经销商”;
    其他的
    返回“推”;
    }
    否则如果(玩家>21)
    返回“经销商”;
    else if(庄家>21)//已检查是否为玩家庄家)
    返回“玩家”;
    否则如果(经销商>玩家)
    返回“经销商”;
    否则返回“推”;
    }
    变量手=[
    {玩家:21,庄家:21},
    {玩家:20,庄家:21},
    {玩家:21,庄家:17},
    {玩家:22,庄家:17},
    {玩家:17,庄家:22},
    {玩家:19,庄家:18},
    {玩家:18,庄家:20},
    {玩家:20,庄家:20}
    ];
    
    对于(var i=0;iHmm),请查找(并阅读/遵循)上的教程/参考资料。因为编造东西“不会起作用”。也许您打算使用?(在
    大小写
    关键字后的值必须是字符串或数字文字。一旦修复或避免了这些错误,请处理彼此的语法错误,一次一个-查阅参考/教程,直到它们全部消失。)验证您的代码:
    结果“black jack”;
    是一个语法错误。与它周围的
    开关无关。@user2864740当你说得这么简单时,我必须感谢你。如果你现在说/elseif似乎更符合逻辑。另外,作为对你问题中的注释的回应,你肯定可以在一个函数中有多个开关语句。这真的回答了问题吗问题?@Timliewis:是的,问题是要确定
    “缺失;之前声明”
    错误的来源。当然还有很多其他事情需要纠正:-)如果还有很多其他事情需要纠正,请纠正它们!我之所以问这个问题,是因为这不是(在我看来)一个完整的答案。但是其他人同意,其他人则不这么认为。