switch语句中出错,Javascript
我得到了一个函数,该函数将根据已处理的Black Jack hand返回一个结果。我为此使用了switch语句,尽管我不确定是否可以在函数中使用多个switch。不管怎样,我得到了一个错误,说'失踪;在第一个“case”中的第一个“result”文本之后的“before”语句。这段代码是我被教过的,所以我不确定哪里出了问题。请你给我一个提示或其他什么好吗?托马斯,雷法兹switch语句中出错,Javascript,javascript,switch-statement,Javascript,Switch Statement,我得到了一个函数,该函数将根据已处理的Black Jack hand返回一个结果。我为此使用了switch语句,尽管我不确定是否可以在函数中使用多个switch。不管怎样,我得到了一个错误,说'失踪;在第一个“case”中的第一个“result”文本之后的“before”语句。这段代码是我被教过的,所以我不确定哪里出了问题。请你给我一个提示或其他什么好吗?托马斯,雷法兹 function printResult(playResult, dealResult) { var text = ""; s
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
}
据我所知,如果你需要做>和
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:是的,问题是要确定“缺失;之前声明”
错误的来源。当然还有很多其他事情需要纠正:-)如果还有很多其他事情需要纠正,请纠正它们!我之所以问这个问题,是因为这不是(在我看来)一个完整的答案。但是其他人同意,其他人则不这么认为。