Java:绘制乘法表的起始循环增量

时间:2016-11-02 14:28:15

标签: java for-loop drawing increment multiplication

我无法弄清楚如何删除此表中的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:

Figure #1

图#2:

Figure #2

2 个答案:

答案 0 :(得分:2)

您差不多完成了 - 您只需要更改从xyx*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;