gpt4 book ai didi

java - 数组索引越界异常,这是注定要发生的吗?

转载 作者:行者123 更新时间:2023-12-03 02:27:24 26 4
gpt4 key购买 nike

我试图用java测试一个程序,但我得到了一个数组索引越界异常,我认为不应该抛出该异常。看看这段代码并告诉我是否遗漏了什么? eclipse 告诉我错误被抛出在我添加了注释来显示它的位置

class maze{

private int cols; // number of columns in maze
private int rows; // number of rows in maze
private String name;
private weightedGraph<Integer> graph;
private dijkstra solution;
public char[][] mazeStore;

public maze(String filename){

try{

FileReader r = new FileReader(filename);
Scanner s = new Scanner(r);
this.rows = s.nextInt();
this.cols = s.nextInt();
this.name = filename;


this.mazeStore = new char[(2*rows)+1][(2*cols)+1];
String line = s.nextLine();
for(int k = 0; k < ((2*rows)+1); k++){

char[] temp = line.toCharArray();

for(int i = 0; i < temp.length; i++){
mazeStore[k][i] = temp[i];
line = s.nextLine();
}
}



graph = new weightedGraph<Integer>(rows*cols);


for(int y = 1; y < 2*rows; y++){
for(int x = 1; x < 2*cols; x++){
if((x % 2 == 1) && (y % 2 == 0)){
if(mazeStore[x][y] != '-'){ // <<<<<<<<<<<<<<THIS IS WHERE THE ERROR IS THROWN
int label = (x - 1) + (x / 2);
graph.addEdge(label, label+cols, 1);
graph.addEdge(label+cols, label, 1);
}
}

if((x % 2 == 0) && (y % 2 == 1)){
if(mazeStore[x][y] != '|'){
int label = ((x - 1) + (x / 2)) + (y / 2);
graph.addEdge(label, label+1, 1);
graph.addEdge(label+1, label, 1);
}
}
}
}



this.solution = new dijkstra(graph, 0);


}
catch(FileNotFoundException e){
System.err.println("FileNotFoundException: " + e.getMessage());
}

最佳答案

您初始化了数组

new char[(2*rows)+1][(2*cols)+1] 

但是迭代它

for(int y = 1; y < 2*rows; y++){//y row iterator
for(int x = 1; x < 2*cols; x++){//x col iterator

应该是这样mazeStore[y][x] 不是 mazeStore[x][y]

关于java - 数组索引越界异常,这是注定要发生的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10838078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com