【问题标题】:Logic behind printing pyramid shape using nested for loops in Java使用 Java 中的嵌套 for 循环打印金字塔形状背后的逻辑
【发布时间】:2017-10-11 04:57:42
【问题描述】:

我已经修改了示例代码以获得我正在寻找的输出,但我不明白下面嵌套的 for 循环背后的逻辑。有人可以向我详细解释每个循环在做什么以及为什么以这种方式构造循环吗?

public class Pyramid {
    public static void main(String[] args) {
        int size = 15;

        for (int i = 1; i <= size; i += 2) {

            for (int k = 0; k < (7 - i / 2); k++) { 
                System.out.print(" ");
            }

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

            System.out.println();
        }
    }      
}

output (below):

       *
      ***
     *****
    *******
   *********
  ***********
 *************
***************

【问题讨论】:

  • 修复你的缩进,它会更清晰!绘制金字塔时,您需要在每i-th 行0..(N-i)/2 空格后面加上1..i 星号。
  • 我对这个问题投了反对票,因为没有任何研究证据。请edit 您的问题包括您所做的研究以及准确您遇到困难的地方。如果你能做到这一点,我可能会撤回我的反对票。
  • 外循环的哪一部分你不明白?
  • 可维护性代码有问题,上面写着int size = 15,好像你可以通过更改该数字来配置三角形的大小,但后来它有数字7硬编码进去;这应该更改为size / 2。此外,int size = 15 应更改为 int rows = 8; int size = rows * 2 - 1; 之类的内容,以便您根据行数配置三角形的大小,并且还知道 size 始终是奇数。

标签: java for-loop nested


【解决方案1】:

当你有这样的伪代码时,会使用这样的嵌套 for 循环:

Do the following x times:
    Do the following y times:
        some stuff
    Do the following z times:
        some stuff

在您的具体情况下,金字塔的大小是动态的,并存储在名为size 的变量中。要打印金字塔,您必须打印size 次以下内容:

  • 一些空格和一些*

那你怎么打印呢?您计算应该有多少个空格和* 并打印它们。由于空格和* 的数量是动态的,因此您需要一个 for 循环来执行此操作,而不是硬编码它们。

你现在看到结构了吗?

外部循环打印金字塔的每一层。第一个内循环打印空格,第二个内循环打印*

【讨论】:

    猜你喜欢
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多