我正在尝试在 java中实现A* 寻路算法。所以我创建了一个网格,并要求用户提供它的尺寸。问题是当width!=height时,程序会抛出该异常。例如,创建 5x5 的网格没有问题,而 5x7 的网格则没有。我不确定如何修复它。这是代码:
JFrame frame = new JFrame();
String rows = JOptionPane.showInputDialog(frame,
"Συμπληρώστε τον αριθμό γραμμών του πλέγματος: \n",
"Δημιουργία πλέγματος",
JOptionPane.PLAIN_MESSAGE);
String cols = JOptionPane.showInputDialog(frame,
"Συμπληρώστε τον αριθμό στηλών του πλέγματος: \n",
"Δημιουργία πλέγματος",
JOptionPane.PLAIN_MESSAGE);
int rowsnum = Integer.parseInt(rows);
int colsnum = Integer.parseInt(cols);
transient Image buffer;
GridCell gridCell[][] = new GridCell[rowsnum][colsnum];
public Map()
{
super();
//{{INIT_CONTROLS
setLayout(new GridLayout(rowsnum,colsnum));
//}}
for(int i=0;i<rowsnum;i++){
for(int j=0;j<colsnum;j++){
System.out.println ("i=" + i + " j="+ j);
gridCell[j][i] = new GridCell();
gridCell[j][i].setPosition(new Point(j,i));
add(gridCell[j][i]);
}
}
}
如您所见,我在每个循环中打印 i 和 j 以查看问题出在哪里。结果是(当我尝试创建一个 3x5 网格时):
run:
i=0 j=0
i=0 j=1
i=0 j=2
i=0 j=3
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at Map.<init>(Map.java:32)
第 32 行是:
gridCell[j][i] = new GridCell();
如果有人可以帮助我,我将不胜感激!
PS忽略希腊!:-D