簡體   English   中英

Java 多維數組越界

[英]Java multidimential array out of bounds

我一直在努力填補我的

 int[][][] sudoku = new int[5][9][9]; 

數組與

String[][] tmp = new String[21][21];

tmp[][] 保存數字,如

005700020009600020 
490060010140050030

例如,這段代碼完美無缺,它給了我想要的數字

System.out.println(Integer.valueOf(tmp[4][10]));

但是這段代碼

//sudoku1
        b=0; c=0;
        for (int i = 0; i < 6; i++) {
            for (int j = 9; j < 18; j++) {
                sudoku[1][b][c] = Integer.valueOf(tmp[i][j]);
            c++;
            }
            b++;
        }

拋出“索引 9 超出長度 9 的范圍”錯誤

這是完整的代碼:

 public static void main(String[] args) throws IOException {

        int[][][] sudoku = new int[5][9][9];
        String[][] tmp = new String[21][21];
        BufferedReader br = new BufferedReader(new FileReader("src/a.txt"));
        String line=br.readLine();
        int a=0;
        while (line!=null){
            String[] larr = line.split("");

            for (int i = 0; i < larr.length; i++) {
                if (!larr[i].equals("*")) {
                    tmp[a][i] = larr[i];
                } else {
                    tmp[a][i] = "0";
                }
            }

            line=br.readLine();
            a++;
        }
       // System.out.println(Integer.valueOf(tmp[2][9]));
        //sudoku1
        int b=0; int c=0;
        for (int i = 0; i < 6; i++) {
            for (int j = 9; j < 18; j++) {
                sudoku[1][b][c] = Integer.valueOf(tmp[i][j]);
                c++;
            }
            b++;
        }//sudoku1

    }

您在兩個循環之外定義了c ,並在內部循環中每次執行添加 1。 內部循環執行 6*9 次,因此c甚至可以達到值 54,但是在嘗試使用sudoku[1][b][c]作為第三個元素的數組索引時,當它達到 9 時會拋出異常多陣列sudoku go 從 0 到 8。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM