このwhileループは時々動作しますが、時には動作しません。なぜ誰かが見ることができますか? 私はそれがループを開始する必要があり、ディーラーの合計が17以上になるまでループを維持し、elseブロックをヒットするように感じる。 elseブロックに入ると、結果値を更新するはずです。しかし、時々、それはelseブロックにジャンプし、次にconsole.log(outcome)
にまっすぐジャンプし、それが未定義であると私に伝えます。正しい結果を返すこともあります。例えばそれは「ディーラー勝利! 私はすべての条件を満たすように感じますか? console.logsに入れても、dealersTotal = total
という行は正しく更新されます。なぜそれは連続的にループしていないのですか?whileループで奇妙な結果が出る
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あなたは正しいので、私が望むものを達成するためにこれを変更するにはどうすればいいですか? –