2D索引 - 数组越界

时间:2016-04-28 19:31:01

标签: java

为了测试我的逻辑是否有效(我认为它应该但不是)我在绘制方法中进行小操作,我只是不想弄乱我的主项目。

我在棋盘上有T和X的X和Y位置,并且想要确保我有正确的X和Y所以我做了这个方法:

private void drawBoard(Graphics2D g2d) throws IOException {
    BufferedImage image = ImageIO.read(getClass().getResourceAsStream("/background.png"));
    g2d.drawImage(image,0,0, null,null);
    int col = 2;
    int rows = 6;
    int[][] RedArray =
        {{274, 399},
        {274, 440},
        {274, 480},
        {274, 520},
        {274, 560},
        {274, 600}};

    for(int i = 0; i < col; i++){
        for(int j = 0; i < rows; j++){
            g2d.drawRect(RedArray[rows][col], RedArray[rows][col], 25, 25);
        }
    }

}

这应该从RedArray中获取x,y值,然后将它们绘制到板上,但我得到一个索引超出范围的错误,我似乎无法启动它

3 个答案:

答案 0 :(得分:2)

在你的第二个for循环中你有我&lt;行,需要是j&lt;像这样的行:

for (int j = 0; j < rows; j++)

同样RedArray[rows][col]应为RedArray[j][i]

答案 1 :(得分:2)

RedArray[rows][col]

您希望此处ij,而不是rowscol

答案 2 :(得分:0)

我想你想做这样的事情

private void drawBoard(Graphics2D g2d) throws IOException {
BufferedImage image = ImageIO.read(getClass().getResourceAsStream("/background.png"));
g2d.drawImage(image,0,0, null,null);
int col = 2;
int rows = 6;
int[][] RedArray =
    {{274, 399},
    {274, 440},
    {274, 480},
    {274, 520},
    {274, 560},
    {274, 600}};

for(int i = 0; i < col; i++){
    for(int j = 0; j < rows; j++){
        g2d.drawRect(RedArray[j][i], RedArray[j][i], 25, 25); // not RedArray[rows][cols]
    }
}

}