我正在创建游戏板。我需要它在用户输入后显示选定的列,而其余列仍显示为“ X”。该游戏保留我在每一列中设置的值,但不会在屏幕上打印它们。当用户选择一列时,我需要打印该列以显示该列所持有的值,而其余列仍显示“ X”,这样它们就不会显示出它们的内容。我是新手,谢谢您的帮助。
这是我认为问题所在的功能。如果您看一下,您会看到我有if语句“ if(isCovered)-然后我希望它打印覆盖的版本。然后是“ else”-我要在其中打印仅被猜测为它的实际值。我尝试了多种方法来实现这一目标,但是没有运气。有没有办法使它像(!isCovered)?但这不起作用,因为它声明它必须是一个数组,并且函数必须是“!”。 “”不起作用。现在看来,它根本根本不会打印“ else”语句。我具有一些功能,可以将用户输入的内容与“ isCovered”进行比较,并且它们可以正常工作,因为该部分在板上移动时我只是无法得到它来打印实际值而不是“ X”。谢谢您的帮助,如果进一步的信息有帮助,请告诉我。不幸的是,由于今天,我只有几天的时间正在努力,并一直在不断努力。
public static void PrintRevealBoard(int[][] myArray,Boolean[][] isCovered)
{
int i, j;
for (i = 0; i<myArray.length ; i++ ) { // array.length = max rows
System.out.print((i+1) + " ");
for(j = 0; j <myArray[0].length; j++) { // array[0].length = max
cols
if(isCovered[i][j]){
System.out.print(GetRollColorCovered(myArray[i][j]) + " ");
} else {
System.out.print(GetRollColor(myArray[i][j]) + " ");
}
}
答案 0 :(得分:0)
您的主模块有点混乱。而且我不知道GetRollColor(dice)是如何工作的。无论如何,据我了解,您有一个二维数组,并且只想显示一个特定值。好像您想显示整个输入列。 输入inputCol后,使用此方法更新isRevealed()。
public static Boolean[][] updateRevealed(Boolean[][] isRevealed, int inputCol){
for(int i=0;i<isRevealed[inputCol].length;i++)
isRevealed[inputCol][i] = true;
return isRevealed;
}
像这样更新
isRevealed = updateRevealed(isRevealed,inputCol);
您的printRevealBoard几乎正确。只需删除第一行。正如我所见,这没有意义,而且您也不需要
int isRevealed = inputCol;
我不知道您的阵列看起来如何。但是由于第一个for循环,您肯定会得到一个
索引超出范围
循环运行,直到我成为myarray.length。在下一个循环中,您将访问myArray的索引I。如果I = myArray.length,将引发异常。你得修复它。如果发生任何问题,我知道。 谢谢
编辑: 尝试使用printRevealBoard
public static void printRevealBoard(char[][] myarray , Boolean[] []isRevealed){
for(int i=0;i<myarray.length;i++){
for(int j=0;j<myarray[0].length;j++){
if (isRevealed[i][j]) System.out.print(myArray[i][j] + " ");
else System.out.print("* ");
}
System.out.println();
}
}