繁体   English   中英

Java:使用if-else语句绘图

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM