我无法弄清楚如何删除此表中的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:
答案 0 :(得分:2)
您差不多完成了 - 您只需要更改从x
,y
,x*y
到(x+1)
,(y+1)
,{{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 :(得分:1)
如果我正确理解您的问题,您想删除顶行和左列吗?如果是这样,请在一个而不是零处开始for
循环。如果您希望图形包含标记为&#39; 10&#39;
x <= 10
。
然后更改行:
int cornerX = x*sizeX;
int cornerY = y*sizeY;
为:
int cornerX = (x-1)*sizeX;
int cornerY = (y-1)*sizeY;