Java:绘制乘法的起始循环增量table
Java: Starting loop increment for drawing a multiplication table
我无法弄清楚如何删除此 table 中的 0。我曾尝试在网上查找它,但几乎没有成功地弄明白(可能没有正确搜索)。除了一些样式更改之外,我正在尝试让图 #1 看起来像图 #2。
如有任何帮助,我将不胜感激。
代码:(http://www.buildingjavaprograms.com/DrawingPanel.java) 使用绘图面板
import java.awt.*;
public class IfGridFor {
public static void main(String[] args) {
DrawingPanel panel = new DrawingPanel(400, 520);
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 <= 12; y++) {
int cornerX = x*sizeX;
int cornerY = y*sizeY;
if ((x + y) % 2 == 0)
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 + " * " + y, cornerX + 5, cornerY + 15); // text is
g.drawString("= " + x * y, cornerX + 5, cornerY + 33); // offsets
}
}
}
}
图 #1:
图#2:
您几乎完成了 - 您只需将显示的内容从 x
、y
、x*y
更改为 (x+1)
、(y+1)
、(x+1)*(y+1)
,并将面板的高度减少一行:
DrawingPanel panel = new DrawingPanel(400, 480); // 12 rows, not 13
...
for (int x = 0; x < 10; x++) {
for (int y = 0; y < 12; y++) { // < instead of <=
...
g.drawString((x+1) + " * " + (y+1), cornerX + 5, cornerY + 15); // text is
g.drawString("" + (x+1) * (y+1), cornerX + 5, cornerY + 33); // offsets
}
}
其余代码(即 ...
部分)保持不变。
如果我对你的问题的理解是正确的,你想删除顶行和左列?如果是这样,请从 1 而不是 0 开始你的 for
循环。此外,如果您希望图形包含标有“10”的正方形,那么您的外循环应该具有条件 x <= 10
。
然后更改行:
int cornerX = x*sizeX;
int cornerY = y*sizeY;
至:
int cornerX = (x-1)*sizeX;
int cornerY = (y-1)*sizeY;
我无法弄清楚如何删除此 table 中的 0。我曾尝试在网上查找它,但几乎没有成功地弄明白(可能没有正确搜索)。除了一些样式更改之外,我正在尝试让图 #1 看起来像图 #2。
如有任何帮助,我将不胜感激。
代码:(http://www.buildingjavaprograms.com/DrawingPanel.java) 使用绘图面板
import java.awt.*;
public class IfGridFor {
public static void main(String[] args) {
DrawingPanel panel = new DrawingPanel(400, 520);
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 <= 12; y++) {
int cornerX = x*sizeX;
int cornerY = y*sizeY;
if ((x + y) % 2 == 0)
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 + " * " + y, cornerX + 5, cornerY + 15); // text is
g.drawString("= " + x * y, cornerX + 5, cornerY + 33); // offsets
}
}
}
}
图 #1:
图#2:
您几乎完成了 - 您只需将显示的内容从 x
、y
、x*y
更改为 (x+1)
、(y+1)
、(x+1)*(y+1)
,并将面板的高度减少一行:
DrawingPanel panel = new DrawingPanel(400, 480); // 12 rows, not 13
...
for (int x = 0; x < 10; x++) {
for (int y = 0; y < 12; y++) { // < instead of <=
...
g.drawString((x+1) + " * " + (y+1), cornerX + 5, cornerY + 15); // text is
g.drawString("" + (x+1) * (y+1), cornerX + 5, cornerY + 33); // offsets
}
}
其余代码(即 ...
部分)保持不变。
如果我对你的问题的理解是正确的,你想删除顶行和左列?如果是这样,请从 1 而不是 0 开始你的 for
循环。此外,如果您希望图形包含标有“10”的正方形,那么您的外循环应该具有条件 x <= 10
。
然后更改行:
int cornerX = x*sizeX;
int cornerY = y*sizeY;
至:
int cornerX = (x-1)*sizeX;
int cornerY = (y-1)*sizeY;