有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在使用acm.graphics库创建ATARI BREAKOUT,并试图访问for循环外的“brick”来删除它。如果没有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);
        }
    }

共 (1) 个答案

  1. # 1 楼答案

    我猜你想在循环中创建许多砖块

    你做错了,每次迭代你只是改变了一块砖的位置。 您需要在每次迭代中创建一个新的砖块,并将其引用保存到某些结构中,最好是[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]);
        }
    }
    

    通过这种方式,您可以拥有全局砖块矩阵,从中可以删除任何条目