2015-02-10 46 views
-5

这是一个假设打印安全或淘汰的作业,具体取决于total3是否大于或小于total4。我的if语句给出了错误的答案

var c4 =5; 
var c5 =1; 
var c6 =4; 
var d4 =1; 
var d5 =11; 
var d6 =1; 

var total3 = c4+c5+c6; 
var total4 = d4+d5+d6; 

var printResult = function(player,dealer){ 
    var game1 = "Player: "+total3 +", Dealer: "+total4; 
    return game1; 
} 
if (total3 > total4){ 
    total3 = 'safe'; 
    total4 = 'busted'; 
} 
if (total4 > total3) { 
    total4 = 'safe'; 
    total3 = 'busted'; 
} 


ANSWER = printResult(total3,total4); 

我得到的答案是: “玩家:捣毁,经销商:安全”

但我猜想得到的答复是: “玩家:安全经销商:安全”

任何有助于理解它为什么不按预期工作的赞赏!

+3

当您使用内置于浏览器中的调试程序运行代码时,您会看到什么代码? – 2015-02-10 13:54:34

+5

*真的*阅读你的陈述。如果两个都是“安全的”,你**不能**得到结果。 – deceze 2015-02-10 13:55:26

+1

为什么人们仍然认为我们在这里调试他们的代码? – melancia 2015-02-10 13:56:06

回答

1

您的语法不允许出现该结果。

如果第一个if循环的计算结果为true,则第二个必须为false,反之亦然。

而且由于if循环内的代码将一个值设置为安全值而另一个值设为安全值,这将始终是这种情况。

我认为这是一款二十一点风格的游戏,并且会建议您分别评估这些变量,然后检查以查看获胜者是谁。

// Declare static max value the indicates if safe or busted 
var MAX = 21; 
var c4 =5; 
var c5 =1; 
var c6 =4; 
var d4 =1; 
var d5 =11; 
var d6 =1; 

var total3 = c4+c5+c6; 
var total4 = d4+d5+d6; 
// Declares 3 variables to hold results for player, dealer and winner 
var player = ''; 
var dealer = ''; 
var winner = ''; 

var printResult = function(player, dealer, winner){ 
    var game1 = "Player: "+ player +", Dealer: "+ dealer + ", " + winner + " has won."; 
    return game1; 
} 

if (total3 > MAX) 
{ 
    player = 'busted'; 
} 
else 
{ 
    player = 'safe'; 
} 

if (total4 > MAX) 
{ 
    dealer = 'busted'; 
} 
else 
{ 
    dealer = 'safe'; 
} 

if (dealer == 'busted' || (total3 > total4 && player == 'safe')) 
{ 
    winner = 'player'; 
} 
else 
{ 
    winner = 'dealer'; 
} 

printResult(player, dealer, winner); 
-2

当你看到第二个if声明时,你已经改变了变量total3total4,所以你比较的是'busted' > 'safe'

对要打印的字符串使用单独的变量,不要重复使用现有变量,并使用else if


此外,请检查您的printResult函数,它不使用传递给它的参数。

0

它确实是它应该做的。 total4(13)高于total3(10)。 此外,您正在将变量播放器和经销商的功能printResult,并没有在功能范围内使用它们。相反,你使用全局变量total3 & total4。