簡體   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