有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中的数字金字塔嵌套循环

我想知道你是否能帮我。我试图用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();
        }

如何使输出正确显示


共 (3) 个答案

  1. # 1 楼答案

    首先,您需要计算您的金字塔需要多少层。如果我没有弄错的话,这应该是ceil(log2(n)) + 1。之后,您可以循环通过标高并填充它们。还记得在每个关卡后打印新行

  2. # 2 楼答案

    您可以还原一个计数器并添加一个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();
        }
    
  3. # 3 楼答案

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

    1. 您需要知道要打印多少行。根据这些信息,您可以计算每行前面需要多少空格

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

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

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