# Is it possible to decrement counter within a condition?

i am trying to detect a jokerStraightFlush when analysing a poker hand. I need to add a feature where this hand works `8S JK 6S JK 4S`. The `JK` are jokers. I am using the exact same code logic as https://www.codeproject.com/Articles/38821/Make-a-poker-hand-evalutator-in-Java.

`cardsTable` represents the distribution of the Card ranks present in the hand. Each element of this array represents the amount of card of that rank(from 1 to 13, 1 being ace) present in the hand. So for `8S JK 6S JK 4S`, the distribution would be

`0 0 0 0 1 0 1 0 1 0 0 0 0 0`

note that the position 1 is for ace (because it’s simpler)

I need to find a way to detect if `cardsTable[i] == 1` failed and decrement the amount of jokers used (`numberOfJokers`) to detect a jokerStraightFlush because in this incomplete piece of code, `numberOfJokers` dont decrement and i dont know how to write it in a nice way. What i do here is i check if the card at this rank exists `cardsTable[i] == 1` or if its a joker… but i dont know how to check for a joker in the others consecutive rankings

I dont know if i’m clear, it’s a twisted situation.. if i’m not let me know.

```straight = false; // assume no straight
int numberOfJokers = 2; //(the maximum number of jokers in a hand is 2)
for (int i = 1; i <= 9; i++) { // can't have straight with lowest value of more than 10
numberOfJokers = 2 //reset the number of jokers available after each loop
if ((cardsTable[i] == 1 || numberOfJokers > 0) &&
(cardsTable[i + 1] == 1 || numberOfJokers > 0) &&
(cardsTable[i + 2] == 1 || numberOfJokers > 0) &&
(cardsTable[i + 3] == 1 || numberOfJokers > 0) &&
(cardsTable[i + 4] == 1 || numberOfJokers > 0)) {
straight = true;
break;
}
}
```

I also have this code but i don’t know how to detect if the first condition failed so i can decrement the number of jokers remaining.

```for (int i = 1; i <= 9; i++) {
numberOfJokers = 2
if (cardsTable[i] == 1 || numberOfJokers>0) {
if (cardsTable[i + 1] == 1 || numberOfJokers>0) {
if (cardsTable[i + 2] == 1 || numberOfJokers > 0) {
if (cardsTable[i + 3] == 1 || numberOfJokers > 0) {
if (cardsTable[i + 4] == 1 || numberOfJokers > 0) {
straight = true;
break;
}
}
}
}
}
}
```

Due to “short-circuiting” behaviour, you don’t need to `detect` the left operand of a `||` resulted in `true`: the right operand gets evaluated if the left one was `false`, only.
`(cardsTable[i + c] == 1 || numberOfJokers-- > 0)` would work; note that `(numberOfJokers-- > 0 || cardsTable[i + c] == 1)` would not.