簡體   English   中英

Java:循環增量不是從0開始

[英]Java: Loop increment not starting at 0

我已經檢查了其他資源,但找不到任何有用的東西。 但是我試圖弄清楚如何在0而不是1處開始循環增量以繪制橢圓內的數字,如下所示。

非常感謝您的幫助。

我的代碼:(繪圖面板: http : //www.buildingjavaprograms.com/DrawingPanel.java

// Draws boxed ovals using a for loop.

import java.awt.*;

public class DrawLoopFor 
{
    public static void main(String[] args) 
    {
        DrawingPanel panel = new DrawingPanel(501, 251);
        panel.setBackground(Color.CYAN);

        Graphics g = panel.getGraphics();
        int sizeX = 50;
        int sizeY = 25;

        for (int i = 0; i < 11; i++) 
        {
            int cornerX = i*50;
            int cornerY = i*25;

            g.setColor(Color.WHITE);
            g.fillOval(cornerX + 5, cornerY + 5, sizeX-10, sizeY-10);
            g.setColor(Color.BLACK);
            g.drawString("" + i, cornerX - 28, cornerY - 8);
            g.setColor(Color.BLACK);
            g.drawRect(cornerX, cornerY, sizeX, sizeY);
        }
    }
}

我的輸出(錯誤): 我的輸出不正確

正確的輸出: 正確的輸出

您在前一個方框而不是當前方框中繪制文本。 這就是為什么最后一個框為空,零被繪制在可見屏幕之外的原因。

最可能是因為在繪制時從cornerX減去28。

嘗試加而不是減。 由於我沒有您的DrawingPanel類,因此無法確認所需的cornerX和cornerY的確切偏移量,但是我認為您應該使用類似以下內容的方法:

g.drawString("" + i, cornerX + 22, cornerY + 17);

(對於X坐標為22,因為您在框的中間之前3個像素處繪制文本的開始,並且25-3 = 22;對於Y坐標為17,因為高度為25,並且您先前在繪制基線文本8高於框的末尾,因此25-8 = 17)

if i=0則添加tempi變量並放入條件if i=0然后temp = 1並乘以tempi而不是i

嘗試這個

for (int i = 0; i < 11; i++) { 
    int tempi; 
    if(i==0) { 
        tempi=1; 
    } else { 
        tempi=i 
    } 
   int cornerX = tempi*50; int cornerY = tempi*25; 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM