我正在用java做一个大学项目。我有一个问题。我正在做一个扑克游戏模拟,我有一个叫做 mano 的数组列表,它在每个位置上都有"figura"和"palo"。另一个数组 Figura[] 有 5 个数字。我想将数字与数组列表 mano 中的数字进行比较,当有 5 个相等时,我希望程序返回我一个 premioPoker = true。但是我收到一个错误,当我执行项目时,我不知道出了什么问题。
String figura[]={"As","Dos","Sota","Caballo","Rey"};
boolean premioPoker = false;
static boolean poker(String figura[], ArrayList<Carta> mano){
boolean premioPoker=false;
int contadorPoker=0;
int contadorMano;
int contadorFigura=0;
do {//contadorMano=0;
do{
//creo un contador
contadorMano=0;
if (figura[contadorFigura].equals(mano.get(contadorMano).getFigura())){ //si la figura es igual a alguna de las almacenadas en la mano, lo contamos
contadorPoker++;
}
contadorMano++;
if (contadorPoker==4) {
premioPoker=true;
}
contadorFigura++;
contadorPoker=0;
}while(contadorMano<5 && contadorPoker<4);
}while (contadorFigura<5 && (!premioPoker));
return premioPoker;
}
您可以使用 ArrayList 的 containsAll 方法:
static boolean poker(String figura[], ArrayList<Carta> mano) {
ArrayList<String> figuraList = Arrays.asList(figura);
ArrayList<String> manoFiguras = new ArrayList<>;
for (Carta carta: mano)
manoFiguras.add(carta.getFigura());
return figuraList.containsAll(manoFiguras);
}
如果按指定顺序需要它们,则应使用equals
而不是containsAll