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;
}
我查看了其他资源,但未能找到有用的信息。但我正在尝试弄清楚如何在 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;
}