繁体   English   中英

错误在哪里? Java,在二维布尔数组上循环出错

[英]Where is the error? Java, error looping over 2D array of booleans

我正在从事 Java 个人编程项目,并且是 Java 新手。 但是对于我在这个特定类中遇到问题的 for 循环并不陌生。 我正在尝试遍历布尔值的二维数组。 该数组是一个长度为 5 的方阵。所以我试图从 i = 0 到 i = 4 的值开始。但是 Java 给了我以下错误:

run:
true
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
false
false
false
false
    at tetris2.pkg0.Piece.main(Piece.java:42)
/home/chihabgoku/.cache/netbeans/8.1/executor-snippets/run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)

我的类的代码如下:

package tetris2.pkg0;

public class Piece {

    private int x;
    private int y;
    private boolean[][] sg;

    public Piece(int xx, int yy, boolean[][] sg){
        this.x = xx;
        this.y = yy;
        this.sg = sg;
    }

    @Override
    public String toString(){
        String res = "(";
        for(int i = 0; i < this.sg.length; i++){
            res += '(';
            for(int j = 0; j < this.sg[0].length; j++){
                if(j < this.sg.length - 1){
                    res += this.sg[i][j] + ", ";
                }else{
                    res += this.sg[i][j];
                }
            }
            res += "), ";
        }
        return res += this.x + ", " + this.y + ")";
    }

    public static void main(String[] args){
        int sgSize = 5;
        boolean[][] sg = new boolean[][]{{true, false, false, false, false}, 
                                         {true, false, false, false, false}, 
                                         {true, false, false, false, false}, 
                                         {true, false, false, false, false}, 
                                         {true, true, true, false, false}
                                        };
        for(int i = 0; i < sgSize - 1; i++){
            for(int j = 0; i < sgSize - 1; j++){
                System.out.println(sg[i][j]);
            }
        }

        Piece p = new Piece(0, 0, sg);
        System.out.println(p);

    }
}

当我摆脱以下部分时,一切正常。

        for(int i = 0; i < sgSize - 1; i++){
            for(int j = 0; i < sgSize - 1; j++){
                System.out.println(sg[i][j]);
            }
        }

有没有人看到错误?

谢谢!

在那:

for(int i = 0; i < sgSize - 1; i++){
    for(int j = 0; i < sgSize - 1; j++){
        System.out.println(sg[i][j]);
    }
}

内部测试 'i' 而不是 'j'。 尝试:

for(int i = 0; i < sgSize - 1; i++){
    for(int j = 0; j < sgSize - 1; j++){
        System.out.println(sg[i][j]);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM