Java 如何使用在for循环内部和循环外部声明的变量?

Java 如何使用在for循环内部和循环外部声明的变量?,java,for-loop,2d-games,acm-java-libraries,Java,For Loop,2d Games,Acm Java Libraries,我正在使用acm.graphics库创建ATARI BREAKOUT,并尝试访问for循环外部的“砖块”以删除它。如果没有for循环,我想不出任何其他方法来创建砖块。帮忙 GRect brick = new GRect(brickwidth, brickheight); for(j = 1; j <= nrows; j++) { for(i = 0; i < bricksperrow; i++) { brick.setLocation

我正在使用
acm.graphics
库创建ATARI BREAKOUT,并尝试访问for循环外部的“砖块”以删除它。如果没有for循环,我想不出任何其他方法来创建砖块。帮忙

GRect brick = new GRect(brickwidth, brickheight);
    for(j = 1; j <= nrows; j++) { 
        for(i = 0; i < bricksperrow; i++) {
            brick.setLocation(i*(brickwidth + brickSep) + 1, brickoffset + j*(brickheight + brickSep));
            if(j == 1 || j == 2) {
                brick.setColor(Color.RED);
                brick.setFilled(true);
            }
            else if(j == 3 || j == 4) {
                brick.setColor(Color.ORANGE);
                brick.setFilled(true);
            }
            else if(j == 5 || j == 6) {
                brick.setColor(Color.YELLOW);
                brick.setFilled(true);
            }
            else if(j == 7 || j == 8) {
                brick.setColor(Color.GREEN);
                brick.setFilled(true);
            }
            else if(j == 9 || j == 10) {
                brick.setColor(Color.CYAN);
                brick.setFilled(true);
            }
            add(brick);
        }
    }
GRect-brick=new-GRect(砖宽、砖高);

对于(j=1;j我想您应该在for循环中创建许多砖块

你做错了,每次迭代你只是改变了一块砖的位置。 您需要在每次迭代中创建一个新的brick,并将其引用保存到某些结构中,最好是[nrows,bricksperrow]维度的矩阵

以下是方法:

GRect[][] bricks = new GRect[nrows][bricksperrow];
for(j = 1; j <= nrows; j++) { 
    for(i = 0; i < bricksperrow; i++) {
        bricks[j - 1][i].setLocation(
                      i*(brickwidth + brickSep) + 1, 
                      brickoffset + j*(brickheight + brickSep));
        if(j == 1 || j == 2) {
            brick.setColor(Color.RED);
            brick.setFilled(true);
        }
        else if(j == 3 || j == 4) {
            brick.setColor(Color.ORANGE);
            brick.setFilled(true);
        }
        else if(j == 5 || j == 6) {
            brick.setColor(Color.YELLOW);
            brick.setFilled(true);
        }
        else if(j == 7 || j == 8) {
            brick.setColor(Color.GREEN);
            brick.setFilled(true);
        }
        else if(j == 9 || j == 10) {
            brick.setColor(Color.CYAN);
            brick.setFilled(true);
        }
        add(bricks[j - 1][i]);
    }
}
GRect[]bricks=newgrect[nrows][bricksperrow];

对于(j=1;j您面临的问题是什么?您在哪里添加
砖块
?在
集合
、列表
映射
中保留已创建砖块的引用,然后从那里简单地将它们删除。顺便说一句,您的
if
链可以很容易地用
开关
替换或者,如果您不希望使用
开关
,您可以大大简化
if
条件。您不能在
for
循环外使用
for
循环内声明的变量,而且在任何情况下,该
for
循环内都没有声明的变量。不清楚您在问什么。但现在,矩阵在for lo内op和我不能在它外部访问它。它不在for循环内部。它可以是实例变量或公共变量。