在Java中检查多个条件并添加到计数器

时间:2018-12-21 14:32:50

标签: java android conditional-statements

我正在尝试检查多个条件,并在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 :(得分:0)

可以使用for循环来简化检查的第一部分。在检查玩家的手是否有一组已定义的值,并在每次比赛时将计数器增加1时,您可以创建一个预期的比赛并像这样迭代他们:

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

可以通过在for语句的右侧进行声明来添加新的检查值。

第二部分比较棘手,因为您要提供两个值和一个 not 值。但是,假设您想要第一个值,而不想要想要第二个和第三个值,则可以像这样使用二维数组:

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如果需要在多行上编写相同的代码,则可以通过某种循环来代替。