Java-更改网格表示中的一个元素

Java-更改网格表示中的一个元素,java,Java,我现在的代码打印出一个由数组组成的网格: //some code that generates the array gameCards[] = {'a','a','a','a','b','b','b','b'} //n is the size/length of the array public String BoardToString(){ int gridCount = 1; int cardCount = 0; char[][] showBoard = new

我现在的代码打印出一个由数组组成的网格:

//some code that generates the array gameCards[] = {'a','a','a','a','b','b','b','b'}
//n is the size/length of the array 
public String BoardToString(){

    int gridCount = 1;
    int cardCount = 0;
    char[][] showBoard = new char[n/4][4];
    while (cardCount < n){
        for(int row = 0; row < (n/4); row++){
            for(int column = 0; column < 4; column++){
                showBoard[row][column] = gameCards[cardCount]; // also how can I use gameCards if it's generated in another method within the same class?
                System.out.print("X (" + gridCount + ") ");
                gridCount++;
                cardCount++;
            }
            if ((n/4) > 1) System.out.println();
        }
    }
}
网格的表示方式与原始数组中元素的顺序相对应。如果我想实现这样的目标:

// if n = 8
X(1) X(2) X(3) X(4)
X(5) X(6) X(7) X(8)
a(1) X(2) X(3) X(4)
X(5) X(6) X(7) X(8)


我应该如何编写循环,以便它可以打印出大部分屏蔽网格,并且只显示1个实际元素(我需要显示的最大元素是2)

基本上,您必须存储用户拾取的卡的坐标。然后在打印卡片时,检查它是否是用户挑选的卡片。如果是,请打印其字母而不是X。记住第一个选项,并对第二张卡重复此过程。第二轮后,清除存储的两张卡并重复

for(int column = 0; column < 4; column++){
    showBoard[row][column] = gameCards[cardCount]; // also how can I use gameCards if it's generated in another method within the same class?
    if (pickedRow1 == row && pickedCol1 == column || pickedRow2 == row && pickedCol2 == column) {
        System.out.print(CARD_LETTER + " (" + gridCount + ") ");
    } else {        
        System.out.print("X (" + gridCount + ") ");
    }
    gridCount++;
    cardCount++;
}
for(int column=0;column<4;column++){
showBoard[row][column]=gameCards[cardCount];//如果gameCards是在同一类中的另一个方法中生成的,那么如何使用它?
if(pickedRow1==行和pickedCol1==列| | pickedRow2==行和pickedCol2==列){
系统输出打印(卡片字母+”(“+gridCount+”);
}否则{
系统输出打印(“X(“+gridCount+”);
}
gridCount++;
cardCount++;
}

关于你的第二个问题。当您在另一种方法中生成游戏卡时,可以将其作为参数传递给BoardToString,也可以将其存储到,然后在
BoardToString
方法中访问它。

您希望何时何地打印“a”或“b”,条件是什么?此外,BoardToString()不会返回签名中所述的字符串。这实际上是用于纸牌游戏。玩家可以翻动任何他们想要的牌,棋盘上应该显示他们刚刚翻动的牌。如果两张牌匹配,则应保持显示状态;如果不匹配,它们将再次翻转(仅显示X)。我制作了数组字符,是否应该将其更改为字符串?若要为玩家拾取的卡绘制“a”或“b”,BoardToString()方法需要知道以(x,y)位置的形式在展示板中选择的卡。这是离题的,但不必使用
cardCount
变量。您可以使用
,这样您的代码看起来像:
showBoard[row][column]=gameCards[4*行+列]并且不需要
while
循环。
for(int column = 0; column < 4; column++){
    showBoard[row][column] = gameCards[cardCount]; // also how can I use gameCards if it's generated in another method within the same class?
    if (pickedRow1 == row && pickedCol1 == column || pickedRow2 == row && pickedCol2 == column) {
        System.out.print(CARD_LETTER + " (" + gridCount + ") ");
    } else {        
        System.out.print("X (" + gridCount + ") ");
    }
    gridCount++;
    cardCount++;
}