我正在尝试检查多个条件,并在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] ++;
答案 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如果需要在多行上编写相同的代码,则可以通过某种循环来代替。