如何在处理中使用循环排列打印的数字?即 x 和 y 轴在 10 到 100 之间

How to arrange printed numbers using loops in processing? i.e. x and y axis in 10's up to a 100

好的,我知道如何打印数字,但我无法重新排列它们。

这是我想要的格式..

1   2   3   4   5   6   7   8   9   10

11  12  13  14  15  16  17  18  19  20


21  22  23... 

一直到 100。因此,10 x 10 网格格式。

这是我使用的代码:

size(500,500);
int x, y;
x= 30;
y= 30;

for(int i=1; i<=100; i++){
    text(i, x, y);
    x+=30;
}

但是,它在一条直线上是100,我不知道如何让11出现在第二条线上。

我试过if语句,但是效果有限,需要大量的if语句才能执行到100条函数,我该怎么做,代码怎样才能更高效?

当计数器是10的倍数时,增加y坐标并将x坐标移回行首。

for(int i=1; i<=100; i++){
    text(i, x, y);
    x+=30;
    if(i % 10 == 0){
       x=30; 
       y += 30;
    }
}

如果我们想彻底消除'IF'语句,那么我们可以重写这段代码如下。

for(int i=0; i<=99; i++) {
    x = 30 + (i % 10) * 30;
    y = 30 + (i/10) * 30;
    text(i+1, x, y);
}

代码解释:

  1. 在这段代码中,循环从 0 开始,到 99 结束,为了打印,我们使用了 i+1,所以它会按预期打印 1 到 100。
  2. 出于计算目的,我们使用了 i 的值,为了打印,我们使用了 i+1。所以请记住 i 总是比循环中的当前数字少一个。
  3. x 随着每个 i 增加 30,并且当数字再次为 11 或 21 时重置为 30 ... 等等。所以如果我们计算 x 是 30 的倍数,余数是 10。当 number 为 1 时,它应该被初始化为 30。所以公式将是...
    x = 30 + (i % 10) * 30;
  4. y 每增加 10 个数字就增加,因为 11 需要打印在下一行。所以 y 以 30 的倍数增加,除以 10。所以公式将是...
    y = 30 + (i/10) * 30;