Java - 循环中有多个 "for" 运算符
Java - Multiple "for" operators in loop
这段代码是如何工作的?
(它使用给定的大小(x,y,z)和坐标(coordX,coordY,coordZ)生成一个由块组成的长方体)
...
public void cuboid(int x, int y, int z)
{
for(int j = 0; j < x; j++)
for(int k = 0; k < y; k++)
for(int l = 0; l < z; l++)
{
Grass.setBlock(j + coordX, k + coordY, l + coordZ);
}
...
多个 "for" 运算符如何工作?我认为,有一种方法可以更有效地做到这一点。
想想下面的代码:
int rows = 5;
for (int i = 1; i <= rows, i++)
{
for (int j = 1; j <= i)
System.out.print("*");
System.out.println("");
}
如果你 运行 它,你会得到一个金字塔,其中每行星星的星星数量与行号相同。尝试追踪它。
你会发现,对于多个 for,最内层的循环 运行s 直到它的变量是它的父循环的值,这将 运行 直到它的变量是它的父循环 (...)
基本上,运行很多。
当 i == 1 时,j 循环 运行s 一次。当 i == 2 时,j 循环 运行s 两次。
如果有三个(比如,i,j,k),k 会 运行 j 次,这会 运行 i 次。我会递增,这将进入 j(从头开始),这将进入 k(从头开始)。我知道这不是很清楚,但很难解释。它需要一种直觉上的飞跃。
至于 simplicity/effectiveness,我不确定,但恕我直言,这是一个很好的方法。
我真的不明白为什么你认为它效率不高。如果目标是从单一立方体构建一个大小为 x,y,z
的大型长方体,那么您将需要 x*y*z
个单一立方体...因为此代码执行 exactly x*y*z
调用,效率再高不过了。
这段代码是如何工作的? (它使用给定的大小(x,y,z)和坐标(coordX,coordY,coordZ)生成一个由块组成的长方体)
...
public void cuboid(int x, int y, int z)
{
for(int j = 0; j < x; j++)
for(int k = 0; k < y; k++)
for(int l = 0; l < z; l++)
{
Grass.setBlock(j + coordX, k + coordY, l + coordZ);
}
...
多个 "for" 运算符如何工作?我认为,有一种方法可以更有效地做到这一点。
想想下面的代码:
int rows = 5;
for (int i = 1; i <= rows, i++)
{
for (int j = 1; j <= i)
System.out.print("*");
System.out.println("");
}
如果你 运行 它,你会得到一个金字塔,其中每行星星的星星数量与行号相同。尝试追踪它。
你会发现,对于多个 for,最内层的循环 运行s 直到它的变量是它的父循环的值,这将 运行 直到它的变量是它的父循环 (...)
基本上,运行很多。 当 i == 1 时,j 循环 运行s 一次。当 i == 2 时,j 循环 运行s 两次。 如果有三个(比如,i,j,k),k 会 运行 j 次,这会 运行 i 次。我会递增,这将进入 j(从头开始),这将进入 k(从头开始)。我知道这不是很清楚,但很难解释。它需要一种直觉上的飞跃。
至于 simplicity/effectiveness,我不确定,但恕我直言,这是一个很好的方法。
我真的不明白为什么你认为它效率不高。如果目标是从单一立方体构建一个大小为 x,y,z
的大型长方体,那么您将需要 x*y*z
个单一立方体...因为此代码执行 exactly x*y*z
调用,效率再高不过了。