Я работаю над проектом, который содержит несколько операторов if внутри 2 для циклов. То, что я пытаюсь сделать, это каждый, если заявление выполнить только один раз, когда она верна Вот мой кодКак предотвратить повторение операторов в цикле for
for (int i = 0; i < 4; i++)
{
for (int k = 0; k < 5; k++)
{
if (PokerCard[k] == two[i])
{
PokerTwo++;
}
if (PokerTwo == 2)
{
cash = cash + 10;
winnings = winnings + 10;
Cash.Text = Convert.ToString(cash);
Winnings.Text = Convert.ToString(winnings);
PairWin.BackColor = Color.Red;
Winner.Visible = true;
return;
}
if (PokerCard[k] == three[i])
{
PokerThree++;
}
if (PokerThree == 2)
{
cash = cash + 10;
winnings = winnings + 10;
Cash.Text = Convert.ToString(cash);
Winnings.Text = Convert.ToString(winnings);
PairWin.BackColor = Color.Red;
Winner.Visible = true;
return;
}
if (PokerCard[k] == four[i])
{
PokerFour++;
}
if (PokerFour == 2)
{
cash = cash + 10;
winnings = winnings + 10;
Cash.Text = Convert.ToString(cash);
Winnings.Text = Convert.ToString(winnings);
PairWin.BackColor = Color.Red;
Winner.Visible = true;
return;
}
if (PokerCard[k] == five[i])
{
PokerFive++;
}
if (PokerFive == 2)
{
cash = cash + 10;
winnings = winnings + 10;
Cash.Text = Convert.ToString(cash);
Winnings.Text = Convert.ToString(winnings);
PairWin.BackColor = Color.Red;
Winner.Visible = true;
return;
}
if (PokerCard[k] == six[i])
{
PokerSix++;
}
if (PokerSix == 2)
{
cash = cash + 10;
winnings = winnings + 10;
Cash.Text = Convert.ToString(cash);
Winnings.Text = Convert.ToString(winnings);
PairWin.BackColor = Color.Red;
Winner.Visible = true;
return;
}
if (PokerCard[k] == seven[i])
{
PokerSeven++;
}
if (PokerSeven == 2)
{
cash = cash + 10;
winnings = winnings + 10;
Cash.Text = Convert.ToString(cash);
Winnings.Text = Convert.ToString(winnings);
PairWin.BackColor = Color.Red;
Winner.Visible = true;
return;
}
if (PokerCard[k] == eight[i])
{
PokerEight++;
}
if (PokerEight == 2)
{
cash = cash + 10;
winnings = winnings + 10;
Cash.Text = Convert.ToString(cash);
Winnings.Text = Convert.ToString(winnings);
PairWin.BackColor = Color.Red;
Winner.Visible = true;
return;
}
if (PokerCard[k] == nine[i])
{
PokerNine++;
}
if (PokerNine == 2)
{
cash = cash + 10;
winnings = winnings + 10;
Cash.Text = Convert.ToString(cash);
Winnings.Text = Convert.ToString(winnings);
PairWin.BackColor = Color.Red;
Winner.Visible = true;
return;
}
if (PokerCard[k] == ten[i])
{
PokerTen++;
}
if (PokerTen == 2)
{
cash = cash + 10;
winnings = winnings + 10;
Cash.Text = Convert.ToString(cash);
Winnings.Text = Convert.ToString(winnings);
PairWin.BackColor = Color.Red;
Winner.Visible = true;
return;
}
if (PokerCard[k] == jack[i])
{
PokerJack++;
}
if (PokerJack == 2)
{
cash = cash + 10;
winnings = winnings + 10;
Cash.Text = Convert.ToString(cash);
Winnings.Text = Convert.ToString(winnings);
PairWin.BackColor = Color.Red;
Winner.Visible = true;
return;
}
if (PokerCard[k] == queen[i])
{
PokerQueen++;
}
if (PokerQueen == 2)
{
cash = cash + 10;
winnings = winnings + 10;
Cash.Text = Convert.ToString(cash);
Winnings.Text = Convert.ToString(winnings);
PairWin.BackColor = Color.Red;
Winner.Visible = true;
return;
}
if (PokerCard[k] == king[i])
{
PokerKing++;
}
if (PokerKing == 2)
{
cash = cash + 10;
winnings = winnings + 10;
Cash.Text = Convert.ToString(cash);
Winnings.Text = Convert.ToString(winnings);
PairWin.BackColor = Color.Red;
Winner.Visible = true;
return;
}
if (PokerCard[k] == ace[i])
{
PokerAce++;
}
if (PokerAce == 2)
{
cash = cash + 10;
winnings = winnings + 10;
Cash.Text = Convert.ToString(cash);
Winnings.Text = Convert.ToString(winnings);
PairWin.BackColor = Color.Red;
Winner.Visible = true;
return;
}
}
}
Как вы можете видеть, когда если утверждение верно, то это добавит 10 к выигрышу, но я только хотите, чтобы он делал это один раз, поэтому, когда он возвращается через цикл, он не будет запускать этот же оператор if, но может быть другой, если он станет истинным. Кроме того, я попытался использовать возврат в конце инструкции if, который работает до некоторой степени, но это позволит только выполнить оператор if, и с проектом, над которым я работаю, мне иногда нужно, чтобы он прошел через два из if заявления. удаление возвращаемого значения приведет к тому, что он перейдет через более операторы if, но также будет запускать один и тот же один раз, что я не хочу. любая помощь будет оценена. Спасибо
Есть какой-то флаг, например statementExecuted = False, и когда он входит в оператор if, измените его на statementExecuted = True, и ваше условие должно быть чем-то вроде if (PokerTwo == 2 && statementExecuted == False) –