我正在尝试使用一种方法创建表,或者我的逻辑错误或者堆栈溢出是导致我出现问题的原因,这就是我正在尝试创建的表...
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
这就是我得到的

1 1 1 1 1
2 2 2 2 2
1 2 3 2 1
2 2 2 2 2
1 1 1 1 1
[[I@4d0948bd


这是我的代码,只有这四个角2需要为1,如果已修复,则我的错误可能已修复。

public class Server{
    public static int[][] tableMaker(){
        int[][] table = new int[5][5];
        for(int i=0; i<table.length; i++){
            for(int j=0; j<table.length; j++){
                if(i==2 && j==2){
                    table[i][j] =3;
                }
                if(i==0 || i==4){
                    table[i][j] = 1;
                }
                if(j==4 || j==0){
                    table[i][j] = 1;
                }
                if((i==1 || i==3) && (j>0 || j<4)){
                    table[i][j] = 2;
                }
                if((i==2 && j==1) || (i==2 && j==3)){
                    table[i][j] = 2;
                }
            }
        }
        for(int i=0; i<table.length; i++){
            for(int j=0; j<table.length; j++){
                System.out.print(table[i][j] + " ");
            }
            System.out.println();
        }
        return table;
    }
}


这是客户端中的打印命令

public class Client{
    public static void main(String[] args){

        System.out.println(Server.tableMaker());
    }
}

最佳答案

不要调用println并传入tableMaker()方法。这就是导致您从int [[I @ 4d0948bd]的2D数组获得默认toString()结果的原因。而是只需调用tableMaker方法。
通过首先在纸上创建表并仔细考虑创建表所需的步骤,重新考虑如何创建表的逻辑。我会使用if + else if块。即,如果该单元格在边缘上,则放入1,否则,如果该单元格与边缘相距1(将逻辑转换为Java)放入2,否则,如果...
如果这是我的方法,则该方法中根本不会包含任何println或print命令。我将创建并返回2D数组,然后让调用代码决定如何处理该数组-就像您的方法一样,它可能会使用嵌套的for循环,但这取决于调用代码。

07-24 19:02
查看更多