2015-02-10 115 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。