[英]Java: Drawing with if-else statements
我在获取if-else语句来为程序绘制正确的颜色时遇到麻烦。 我的印象是,if语句未使用else语句和“ setColor”正确组织,我为如何使黑色呈现为黄色而感到困惑。 描述它的最好方法是展示它。
我会很感激任何帮助!
我的输出(错误):
目标输出(右):
我的代码:
import java.awt.*;
public class IfGridEx3 {
public static void main(String[] args) {
DrawingPanel panel = new DrawingPanel(400, 400);
panel.setBackground(Color.blue);
Graphics g = panel.getGraphics();
int sizeX = 40;
int sizeY = 40;
for (int x = 0; x < 10; x++) {
for (int y = 0; y < 10; y++) {
int cornerX = x*sizeX;
int cornerY = y*sizeY;
if (x > 1)
if (x < 8)
if (y > 1)
if (y < 8)
g.setColor(Color.green);
else
g.setColor(Color.yellow);
g.fillRect(cornerX+1, cornerY+1, sizeX-2, sizeY-2);
g.setColor(Color.black);
g.drawString("x="+x, cornerX+10, cornerY+15); // text is positioned at its baseline
g.drawString("y="+y, cornerX+10, cornerY+33); // offsets from the corner do centering
}
}
}
}
您的else
仅基于last if
结果,因此g.setColor(Color.yellow);
仅在所有条件下都将被调用
if (x > 1)
if (x < 8)
if (y > 1)
将真(否则在最后一个条件if
甚至不会进行测试),
和条件的结果评估从if
if (y < 8)
将是false
。 这意味着,如果前三个条件为false
,则else
将不会被调用,这就是为什么您看到某些区域未设置的原因。
要解决此问题,您可以为中心区域创建单个条件
if (x > 1 && x < 8 && y > 1 && y < 8){
g.setColor(Color.green);
} else {
g.setColor(Color.yellow);
}
尝试这个 :
if((x>=2 && x<=7) && (y>=2 &&y<=7))
//fill color green
else
//fill yello color
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.