[英]Array index out of bounds - 2d to 1d
我正在使用普林斯頓大學提出的algs4 8拼圖程序。 我在第二個for循環中獲取數組索引超出范圍異常。 有人看到引發此異常的問題嗎? 我的板子類+相關方法如下:
public class Board {
private final int[][] blocks;
private final int N;
// construct a board from an N-by-N array of blocks
// (where blocks[i][j] = block in row i, column j)
public Board(int[][] blocks){
N = blocks.length;
this.blocks = new int[N][];
for (int i=0; i<N; i++){
this.blocks[i] = Arrays.copyOf(blocks[i], N);
}
}
// board dimension N
public int dimension(){
return this.N;
}
//is the board solvable?
public boolean isSolvable(){
int inversions = 0;
List<Integer> convert = new ArrayList<>(); // convert 2d to 1d
for (int i = 0; i < blocks.length; i++){
for (int j = 0; j < blocks[i].length; j++){
convert.add(blocks[i][j]);
}
}
for (int i = 0; i < blocks.length; i++){ //counts the number of inversions
if (convert.get(i) < convert.get(i-1)){ //ARRAYINDEXOUTOFBOUNDS -1
inversions++;
}
}
if (inversions % 2 == 0){
return true; //even
}
return false; //odd
}
當i == 0時convert.get(i-1)
超出范圍。
您可能應該更改循環的開始索引:
for (int i = 1; i < blocks.length; i++){ //counts the number of inversions
if (convert.get(i) < convert.get(i-1)){
inversions++;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.