如何在处理中使用循环排列打印的数字?即 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);
}
代码解释:
- 在这段代码中,循环从 0 开始,到 99 结束,为了打印,我们使用了 i+1,所以它会按预期打印 1 到 100。
- 出于计算目的,我们使用了 i 的值,为了打印,我们使用了 i+1。所以请记住 i 总是比循环中的当前数字少一个。
- x 随着每个 i 增加 30,并且当数字再次为 11 或 21 时重置为 30 ... 等等。所以如果我们计算 x 是 30 的倍数,余数是 10。当 number 为 1 时,它应该被初始化为 30。所以公式将是...
x = 30 + (i % 10) * 30;
- y 每增加 10 个数字就增加,因为 11 需要打印在下一行。所以 y 以 30 的倍数增加,除以 10。所以公式将是...
y = 30 + (i/10) * 30;
好的,我知道如何打印数字,但我无法重新排列它们。
这是我想要的格式..
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);
}
代码解释:
- 在这段代码中,循环从 0 开始,到 99 结束,为了打印,我们使用了 i+1,所以它会按预期打印 1 到 100。
- 出于计算目的,我们使用了 i 的值,为了打印,我们使用了 i+1。所以请记住 i 总是比循环中的当前数字少一个。
- x 随着每个 i 增加 30,并且当数字再次为 11 或 21 时重置为 30 ... 等等。所以如果我们计算 x 是 30 的倍数,余数是 10。当 number 为 1 时,它应该被初始化为 30。所以公式将是...
x = 30 + (i % 10) * 30; - y 每增加 10 个数字就增加,因为 11 需要打印在下一行。所以 y 以 30 的倍数增加,除以 10。所以公式将是...
y = 30 + (i/10) * 30;