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 class 我无法确认你需要的 cornerX 和 cornerY 的确切偏移量,但我认为你应该使用类似的东西:

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

(X 坐标为 22,因为您在框中间之前 3 个像素处绘制文本的开始,并且 25 - 3 = 22;Y 坐标为 17,因为高度为 25,并且您之前绘制的文本基线比框的末尾高 8,所以 25 - 8 = 17)

添加 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; 
}