【问题标题】:Java: Loop increment not starting at 0Java:循环增量不是从 0 开始
【发布时间】:2016-11-02 03:57:38
【问题描述】:

我查看了其他资源,但找不到有用的东西。但我试图弄清楚如何从 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);
        }
    }
}

我的输出(错误):

正确的输出:

【问题讨论】:

  • DrawingPanel 是什么?您没有导入它(Java 标准 API 中不存在此类)
  • 您的累加器从 0 开始。这里还有另一个错误。注意最后一个元素是如何没有标签的。
  • 我怀疑您在错误的框中绘制了文本。在对drawString 的调用中,将-s 更改为+s。

标签: java for-loop drawing increment zero


【解决方案1】:

您在前一个框中而不是当前框中绘制文本。这就是为什么最后一个框是空的,并且在可见屏幕之外绘制了零。

很可能是因为您在绘制时从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)

【讨论】:

  • 妈的,你比我快30秒:/
  • @Carcigenicate 抱歉.. ;-) 我想我现在有坐标可以在框内的相同位置绘制文本。
  • 它应该可以工作。假设它使用标准窗口坐标系(应该使用),它应该增加到右下角,所以添加比减去更有意义。
【解决方案2】:

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

【讨论】:

  • 这是做什么的?当 i==1 时,这不会导致 2 个椭圆重叠吗?
猜你喜欢
  • 2023-03-22
  • 2021-04-24
  • 2012-05-31
  • 2021-10-18
  • 2013-06-22
  • 1970-01-01
  • 2012-11-27
  • 2012-08-31
  • 2015-02-12
相关资源
最近更新 更多