2015-02-10 2 views
-5

Это присвоение, которое предполагается напечатать в безопасном или разоренном состоянии в зависимости от того, является ли total3 больше или меньше total4.my if-statement, дающий неправильный ответ

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); 

Ответ Я получаю: «Игрок: лопнул, Дилер: безопасный»

Но ответ я предположу, что, чтобы получить это: «игрок: сейф, Dealer: сейф»

Любая помощь, чтобы понять, почему она не работает должным образом, ценится!

+3

Что вы видите, когда просматриваете код, когда он работает, используя отладчик, встроенный в ваш браузер? –

+5

* Действительно * прочитайте, что делают ваши заявления. Вы ** не можете получить результат, где оба являются «безопасными». – deceze

+1

Почему люди все еще думают, что мы здесь, чтобы отлаживать их код? – melancia

ответ

1

Ваш синтаксис не позволяет получить такой результат.

Если первый цикл if равен true, второй должен быть ложным и наоборот.

И так как код внутри циклов if устанавливает одно значение в безопасное, а другое - в busted, это всегда будет иметь место.

Я предполагаю, что это игра в стиле блэкджека, и предложит вам отдельно оценить переменные, а затем проверить, кто из них победитель.

// 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, вы уже изменили переменные total3 и total4, так что вы сравниваете 'busted' > 'safe'.

Используйте отдельные переменные для строк, которые вы хотите распечатать, не используйте повторно существующие переменные и используйте else if.


Кроме того, проверьте printResult функцию, она не использует переданные аргументы к нему.

0

Он делает именно то, что он должен делать. всего 4 (13) больше, чем total3 (10). Также вы устанавливаете проигрыватель переменных и дилера для функции printResult, и вы не используете их в рамках функции. Вместо этого вы используете глобальные переменные total3 & всего4.

Смежные вопросы