访问二维数组元素时出现问题(仅生成一列)。-JAVA

访问二维数组元素时出现问题(仅生成一列)。-JAVA,java,arrays,data-manipulation,getelementbyid,Java,Arrays,Data Manipulation,Getelementbyid,在我上一个关于编码入门课程的项目中,当我试图打印/修改/访问2D数组中的元素时,我遇到了一些问题。长话短说,我正在构建一个connect-four游戏,并获得了一些完整类和一些不完整类来组合生成游戏 column类(包含第二个值数组char,也称为column)下的一个方法称为get,代码如下: public char get(int row) { row = height; if(row < 7 && row > 0) {

在我上一个关于编码入门课程的项目中,当我试图打印/修改/访问2D数组中的元素时,我遇到了一些问题。长话短说,我正在构建一个connect-four游戏,并获得了一些完整类和一些不完整类来组合生成游戏

column类(包含第二个值数组char,也称为column)下的一个方法称为get,代码如下:

public char get(int row) {
    row = height;
    
    if(row < 7 && row > 0) {
        System.out.println(column[row]);
        return column[row]; 
    } else {
        char invalid = ' ';
        return invalid; 
    }
}
public void display() {
    System.out.println("1 2 3 4 5 6 7");
    
    for(int i = 0; i < board.length; i++) {
        for(int j = 0; j < NUM_ROWS; j++)
            System.out.println("[" + board[i].get(j) + "]");
    }
    
    System.out.println("1 2 3 4 5 6 7");
}

因此,我相当确定问题出在get方法上,但我完全不知道需要解决什么问题。如果在用户提示中输入任何大于0的值,我也会收到ArrayIndexOutofBounds异常。

您几乎肯定需要解决的问题是,在每个元素后不打印换行符。仅在每行末尾打印换行符。您可能应该将
println
get
方法中删除,我认为它对您的影响大于帮助

public void display() {
    System.out.println("1 2 3 4 5 6 7");
    
    for(int i = 0; i < board.length; i++) {
        for(int j = 0; j < NUM_ROWS; j++)
            System.out.print("[" + board[i].get(j) + "] ");
        System.out.println("");
    }
    
    System.out.println("1 2 3 4 5 6 7");
}
public void display(){
系统输出打印号(“1234567”);
对于(int i=0;i

这将清理您的输出并让您更好地了解其他问题所在。

此条件不存在:
column>7&&column<1
这说明了另一个问题。嗯,有两个问题。OP需要将代码分成更小的块,并分别进行测试。这将更容易发现错误。第二个问题是OP返回“假”值,而不是抛出异常。这也使得很难发现错误。当上述测试失败时抛出
IllegalArgumentException
将使测试本身的问题立即显现出来。这至少要明显得多,谢谢提示!至少现在它正在打印一个网格,但我仍然有和以前一样的问题。
public void display() {
    System.out.println("1 2 3 4 5 6 7");
    
    for(int i = 0; i < board.length; i++) {
        for(int j = 0; j < NUM_ROWS; j++)
            System.out.println("[" + board[i].get(j) + "]");
    }
    
    System.out.println("1 2 3 4 5 6 7");
}
Welcome to Nibble Nabble! What's your name?
Alex
1 2 3 4 5 6 7
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
1 2 3 4 5 6 7
Alex > 0
true
public void display() {
    System.out.println("1 2 3 4 5 6 7");
    
    for(int i = 0; i < board.length; i++) {
        for(int j = 0; j < NUM_ROWS; j++)
            System.out.print("[" + board[i].get(j) + "] ");
        System.out.println("");
    }
    
    System.out.println("1 2 3 4 5 6 7");
}