有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在2D数组Java上仅更改和显示一列(通过用户输入)

我正在创建一个游戏板。我需要它在用户输入后显示所选列的一个名称,而其余列仍打印为“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]) + " ");
         }
       }

共 (1) 个答案

  1. # 1 楼答案

    你的主要模块有点乱。我不知道GetRollColor(骰子)是如何工作的。无论如何,据我所知,你有一个二维数组,你只想显示一个特定的值。看起来你想显示整个输入列。 使用此选项在输入inputCol后更新isRevaled()

    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循环,u肯定会得到一个

    index out of bounds exception

    循环一直运行,直到我成为myarray。长在下一个循环中,您将访问myArray的索引I。如果I=myArray,将引发异常。长你得把它修好。如果有什么问题,让我知道。 谢谢

    编辑: 在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();
         }
    }