我的问题在于方法的检查器部分的逻辑和输出。
程序运行drawCard()5次并创建“hand”后,它会通过检查程序以确保没有副本。如果有任何副本,它“绘制一张新卡”并替换匹配的副本。
然而,每次我运行该程序时,都会运行程序,检查器部分标记并替换每个“卡”,无论它是原始卡还是副本。
此外,在修复逻辑药水后,确保新“卡片”与现有卡片不匹配的最简单方法是什么。
另外:每张“卡”都是1d数组。种类用1-13表示,套装为0-3
public static int[][] drawHand(){
int[][] hand = new int[5][2];
//CALLS drawCard 5 TIMES AND FILLS THE 5 SLOTS WITH "CARDS" CREATES A "HAND"
for(int i=0; i<5;i++) {
int[] x = drawCard();
hand[i][0]=x[0];
hand[i][1]=x[1];
}
//PRINTS OUT HAND BEFORE IT GOES THROUGH THE CHECKER
System.out.println("BEFORE");
for(int i=0;i<5;i++) {
System.out.println(hand[i][0]+" "+ hand[i][1]);
}
//CHECKER
for(int h=0;h<hand.length;h++) {
for(int f=4;f>=0;f--) {
if(hand[h][0]==hand[f][0]&&hand[h][1]==hand[f][1]){
int[] x = drawCard();
hand[h][0]=x[0];
hand[h][1]=x[1];
}
}
}
System.out.println("AFTER");
for(int j=0;j<5;j++) {
System.out.println(hand[j][0]+" "+ hand[j][1]);
}
return hand;
}
答案 0 :(得分:0)
你的双循环最终会检查
当然,这些将始终匹配,并且将为每个卡绘制一张新卡。您可以通过在测试中添加f !=h
来阻止这种情况,例如:
if(f!=h && hand[h][0]==hand[f][0]&&hand[h][1]==hand[f][1]){
要重新检查抽出的卡片,请添加do {…} while(redraw_made);
循环。每次循环时,将redraw_made
设置为false
,如果重新绘制卡片,请将其设置为true
,以便再次执行检查。