【问题标题】:Number Pyramid Nested Loop in javajava中的数字金字塔嵌套循环
【发布时间】:2018-11-13 17:44:44
【问题描述】:

我想知道你能不能帮帮我。我正在尝试在 java 中编写一个嵌套的 for 循环,该循环显示一个看起来像这样的数字金字塔;

            1
          2 1
        4 2 1
      8 4 2 1
   16 8 4 2 1
32 16 8 4 2 1

这是我目前所拥有的:

 int n = 32;
        for (int i = 1; i <= n; i *= 2) {
            for (int k = 1; k <= i; k *= 2) {
                System.out.print(k + "\t");
            }
            System.out.println();
        }

如何让输出正确显示

【问题讨论】:

标签: java nested-loops


【解决方案1】:

您可以还原一个计数器并添加一个for 来关心标签:

    int n = 32;
    for (int i = 1; i <= n; i *= 2) {
        for (int j = i; j < n; j *= 2)
            System.out.print("\t");
        for (int k = i; k >= 1; k /= 2)
            if (i == k)
                System.out.print(k);
            else
                System.out.print("\t" + k);
        System.out.println();
    }

【讨论】:

  • 我明白了,没想到,非常感谢先生
【解决方案2】:

首先,您需要计算您的金字塔需要多少层。如果我没记错的话,应该是ceil(log2(n)) + 1。之后,您可以遍历关卡并填充它们。还记得在每个级别之后打印一个新行。

【讨论】:

    【解决方案3】:

    在解决这个“练习”时,我遇到了两个问题。

    1. 您需要知道要打印多少行。有了这些信息,您就可以计算出每行前面需要多少个空格。

    2. 您需要知道最大数字的位数。这对于在打印每个数字时保留足够的空间是必要的。这是我的结果。

                      1
                   2  1
                4  2  1
             8  4  2  1
         16  8  4  2  1
      32 16  8  4  2  1
      

    此外,我会以您想要的行数而不是最大数来启动程序。这对我来说似乎更容易。

    【讨论】:

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