Проверка нескольких условий и добавление к счетчику в Java - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь проверить несколько условий и добавить в счетчик для каждого условия в Android.Я спрашиваю, есть ли лучший способ, чем мое решение, в частности, последние 8 строк кода ниже.Я напишу больше условий.

int [] bidCounter = new int[2]; 
deck = new ArrayList<>();
southdeck = new ArrayList<>();
for (int i = 0; i < 52; i++){
        deck.add(i);
}
Collections.shuffle(deck);
for (int i = 0; i<13; i++) {
    southdeck.add(deck.get(i));
}

if (playerdeck.contains(12)) bidCounter[0] ++;
if (playerdeck.contains(25)) bidCounter[0] ++;
if (playerdeck.contains(38)) bidCounter[0] ++;
if (playerdeck.contains(51)) bidCounter[0] ++;
if (!playerdeck.contains(12) && playerdeck.contains(11) && playerdeck.contains(10)) bidCounter[0] ++;
if (!playerdeck.contains(25) && playerdeck.contains(24) && playerdeck.contains(23)) bidCounter[0] ++;
if (!playerdeck.contains(38) && playerdeck.contains(37) && playerdeck.contains(36)) bidCounter[0] ++;
if (!playerdeck.contains(51) && playerdeck.contains(50) && playerdeck.contains(49)) bidCounter[0] ++;

1 Ответ

0 голосов
/ 21 декабря 2018

Первая часть ваших проверок может быть упрощена с помощью цикла for.Поскольку вы проверяете руку игрока на наличие определенного набора значений и увеличиваете счетчик на 1 каждый раз, когда получаете совпадение, вы можете создать массив ожидаемых совпадений и выполнить итерации по ним следующим образом:

for (int i : new int[] { 12, 25, 38, 51 }) {
    if (playerdeck.contains(i)) bidCounter[0]++;
}

Новые проверочные значения можно добавить, объявив их справа от оператора for.

Вторая часть немного сложнее, так как вы запрашиваете два значения дляприсутствовать и одно значение не присутствовать.Однако, предполагая, что вы не хотите первое значение, а do хотите второе и третье значения, вы можете использовать двумерный массив следующим образом:

int[][] compositeCheck = new int[][] {
    { 12, 11, 10 },
    { 25, 24, 23 },
    { 38, 37, 36 },
    { 51, 50, 49 }
};

for (int[] i : compositeCheck) {
    if (!playerdeck.contains(i[0])
            && playerdeck.contains(i[1])
            && playerdeck.contains(i[2])) {
       bidCounter[0]++;
    }
}

tl; dr Если вам нужно написать один и тот же код в несколько строк, скорее всего, вместо этого вы можете сделать это в каком-то цикле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...