Этот цикл работает иногда, а иногда и нет. может ли кто-нибудь понять, почему? Я чувствую, что он должен начинать цикл и продолжать цикл, пока сумма дилеров больше 17 и не ударит по блоку else. как только он переходит в блок else, он должен обновить значение результата. однако иногда он перескакивает в блок else, а затем переходит прямо к console.log(outcome)
и говорит мне, что он не определен. иногда он вернет правильный результат. например он выдает «выигрыш дилера»! Я чувствую, что я встретил все условия? Я даже положил в console.logs, и строка dealersTotal = total
обновилась правильно. почему это не непрерывный цикл?while loop дает странные результаты
dealerTwisted =() => {
let dealersTotal = this.state.dealersOverallTotal;
let playersTotal = this.state.playersOverallTotal;
let looping = true;
let outcome = '';
while(looping){
if(dealersTotal < 17){
this.deal2Dealer();
let dealersDeck = this.state.dealersDeck;
let newDealersDeckTotal = [];
for (var i=0; i < dealersDeck.length; i++){
newDealersDeckTotal.push(dealersDeck[i].rankValue)
}
let total = newDealersDeckTotal.reduce(function(a, b) {
return a + b;
},
0);
dealersTotal = total;
}
else {
if(dealersTotal > 21){
outcome = 'player wins!';
break;
}
else if(playersTotal > dealersTotal){
outcome = 'player wins!';
break;
}
else if (playersTotal == dealersTotal){
outcome = 'tie!';
break;
}
else if (dealersTotal > playersTotal){
outcome = 'dealer wins!';
break;
}
else {
console.log('got here');
break;
}
}
console.log(outcome);
this.setState({resultOutcome: outcome})
break;
}
};
EDIT: Думаю, я понял это. Он должен войти в первый, если и затем он попадает в перерыв в конце большого другого. ОДНАКО, проблема по-прежнему в том, что мне нужно, чтобы она зацикливалась и только ломалась, когда все условия были покрыты. решение?
Если я правильно читать это, ваш цикл всегда будет иметь только один итерацию из безусловного 'break' в конце. –
@NikolaNovak, вы правы, так как я могу изменить это, чтобы достичь того, чего хочу? –