我在使用2D数组和插入带有3个参数的对象时遇到困难(int x,int y,int cost) 这是搜索算法的开始,并且无可否认地开始了一个非常糟糕的开始。我将粘贴下面的代码。我尝试运行此代码时收到编译错误,我非常确定它很简单,但我无法解决它。 我打算使用Map2类来实现大部分算法,例如排序等。
import java.util.Arrays;
public class Map2 {
public static void main (String args[]){
Points[][] grid = new Points[4][4];
for(int i = 0; i < grid.length; i++){
for(int j = 0; j < grid.length; j++){
grid[i][j] = new Points(i,j,1);
}
}
System.out.print(Arrays.deepToString(grid));
}
}
这个类是我的对象,它包含从一个位置移动到下一个位置的移动成本(下一步显然是确定邻居),是的,这是尝试创建一个有效的A星算法的一部分。 / p>
public class Points {
int x;
int y;
int movement_cost;
public Points(int iX, int iY, int cost){
x = iX;
y = iY;
movement_cost = cost;
}
public int getX(){
return x;
}
public int getY(){
return y;
}
public int getMovementCost(){
return movement_cost;
}
public void setX(int x){
this.x = x;
}
public void setY(int y){
this.y = y;
}
public void setMovementCost(int cost){
this.movement_cost = cost;
}
public String toString(){
return ""+getX()+ ""+getY()+""+getMovementCost();
}
}
这是控制台在编译后读出(内存中有3个地址空间)
run:[[001, 011, 021, 031], [101, 111, 121, 131],
[201, 211, 221, 231], [301, 311, 321, 331]]
BUILD SUCCESSFUL (total time: 2 seconds)
我希望这里很简单,数组中的每个对象都将包含其在内存中的坐标的引用,并包含移动成本,稍后将用于比较以确定下一个最佳位置(我稍后将实现)目标,开始等事情
我的问题是:代码的错误是什么?
我要提前感谢,因为您的回答将永远受到赞赏,
我的问题V0.1的当前修订: 哇,谢谢快速响应,我今天学到了新的东西^^那个Arrays.deepToString(grid));是一个我不知道的amasing工具,但是我仍然收到运行时错误。再次感谢您的回复,再次感谢您的回复:)。上面的代码已按建议修改,但运行时错误仍然存在
答案 0 :(得分:1)
您的代码有几个问题:
grid.length
),System.out.println
时不会打印其内容)如果您的矩阵确实总是正方形,则第一项是正常的。通过将输出移动到第二个嵌套循环之外,可以很容易地修复第二个项目。
第三项是最难的。编写一个采用2D数组的静态方法,然后使用两个嵌套循环逐个元素地打印它,这将是一个很好的练习。如果您更愿意使用系统功能,也可以使用System.out.println(Arrays.deepToString(grid));
。