我有一个函数应该返回一个结果,取决于一个已处理的黑杰克手。我使用了一个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));
答案 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)
看看你的功能,即使你让开关工作,我也不认为逻辑是你的目标。
如果该功能的目的是告诉你谁赢了游戏,那么你的名字意味着结果,那么你需要先把规则放下..让我们只是为了可读性而把它写成伪...
如果任一玩家有二十一点,请查看以下内容
然后检查一个人是否破产,赢得一个必须持有的球员
之后,我们可以进行简单的检查。
您无法真正有效地使用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);
}
这是有用的..但它不能保护你免受不良输入,例如如果你不小心传入了两个空值,你会得到一个“推”结果,你应该发出错误或者让游戏无效......但那就是你。