我正在尝试使用一种方法创建表,或者我的逻辑错误或者堆栈溢出是导致我出现问题的原因,这就是我正在尝试创建的表...
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循环,但这取决于调用代码。