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循环内部。它可以是实例变量或公共变量。