【问题标题】:Java - Multiple "for" operators in loop [closed]Java - 循环中的多个“for”运算符[关闭]
【发布时间】:2015-01-02 23:39:51
【问题描述】:

这段代码是如何工作的? (它使用给定的大小(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”运算符如何工作?我认为,有一种方法可以更有效地做到这一点。

【问题讨论】:

  • 这个问题似乎离题了,因为它可以通过添加打印语句、使用调试器或只是写在一张纸上来轻松回答。 Stack Overflow 不能替代课程、书籍、教程或常识。
  • 呃,我没想到。
  • 我不太同意,这里没有调试,OP要求代码解释

标签: java loops for-loop 3d logic


【解决方案1】:

想想下面的代码:

int rows = 5;
for (int i = 1; i <= rows, i++)
{
     for (int j = 1; j <= i)
          System.out.print("*");
     System.out.println("");
}

如果你运行它,你会得到一个金字塔,其中每行星的星数与行号相同。尝试追踪它。

你会发现,对于多个 fors,最里面的循环会一直运行,直到它的变量是它的父循环的值,它会一直运行,直到它的变量是它的父循环的值 (...)

基本上,它运行很多。 当 i == 1 时,j 循环运行一次。当 i == 2 时,j 循环运行两次。 如果有三个(例如,i,j,k),k 将运行 j 次,这将运行 i 次。我会递增,它会进入 j(从头开始),然后会进入 k(从头开始)。我知道这不是很清楚,但很难解释。它需要一种直观的飞跃。

就简单性/有效性而言,我不确定,但恕我直言,这是一个很好的方法。

【讨论】:

  • 是的,但如果它是一个立方体,同样的功能也适用。你从一个角落和填充宽度开始,添加一行,填充宽度等,直到长度被填充。然后向上移动一层并重新开始,直到填满高度
  • 是的,但你解释的某些元素不适用于立方体,至少你试试我承认很难回答
  • 有点深奥。就像我说的,你必须做出直观的飞跃。或者愿意逐步完成循环并理解它。
  • 谢谢,你让我明白了。
【解决方案2】:

我真的不明白你为什么认为它没有效率。如果目标是从单一立方体构建一个大小为x,y,z 的大长方体,那么您将需要x*y*z 单一立方体......因为此代码执行完全 x*y*z 调用,它不能这样更有效率。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 2021-02-20
    • 2011-08-31
    • 1970-01-01
    相关资源
    最近更新 更多