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:

您几乎完成了 - 您只需将显示的内容从 xyx*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;