Java编程中的数字金字塔代码

时间:2015-06-30 06:40:06

标签: java

创建一个显示下图的java代码:

         1
       2 3 4
     3 4 5 6 7
   4 5 6 7 8 9 10
嘿伙计们!新来的。我们有一个涉及java编程的练习,并且出于某种原因它似乎让我的头脑在解决这个问题上大打折扣。到目前为止我做了什么,但输出不正确。

public class Pyramid {
    public static void main(String[] args) {
        int size = 10;
        for (int row = 1; row <= size; row++) {
            int j = 1;
            int i = 1;
            int counter1 = 1;
            int counter2 = 1;

            // print space
            while (j++ <= size - row) {
                System.out.print(" ");
            }

            // count up
            j = size - (size - row);
            if (j == 10) j = 0;
            counter1 = 1;
            while (counter1 <= row) {
                System.out.print(j);
                if (j == 9 && counter1 != row) j = -1;
                j++;
                counter1++;
            }
            j = j - 2;
            counter2 = 1;

            // count down
            while (counter2 < row) {
                System.out.print(j--);
                if (j < 0) j = 9;
                counter2++;
            }
            System.out.print("\n");
        }
    }
}

4 个答案:

答案 0 :(得分:1)

我可以看到你发布的两个主要错误。

  1. 10是金字塔中的最高数字,但它只有 4 行。所以size应该等于4(除非它只是一个例子,行数并不重要)。
  2. 我看不出你倒计时的原因。您可以看到数字总是在同一行中增加。
  3. 除此之外:

    • 您应该将数字分隔为空白。您示例中的数字相互粘连。这意味着您必须在每行之前更改空格数。 (在你的例子中,你可以简单地加倍空格)
    • 真的不重要:如果想要换行,可以使用System.out.println()

答案 1 :(得分:0)

在这里,你在每个原始中点之后进行倒计时。因此,不是增加数量,而是减少倒数部分(j正在减少)。

在这里你需要4个原始数据。但是你已经为一些条件设定了10个原始数据(这里你不需要指定最高数字。你只需要输入原始数量就足够了。请找到下面的逻辑。)

即使您需要增加原始数量,也不应更改逻辑。

逻辑: 对于每个原始元素,元素的数量应该是原始的奇数,每个原始元素的第一个元素应该以原始数字开头。

例如,

如果我们考虑第3个原始数据,那么第3个奇数是= (3*2) - 1 = 5。因此原始元素的数量为5。 第3个raw的start元素是3。 原始的将是:

3,4,5,6,7

请尝试以下代码:

int n = 5;
    for (int i = 1; i < n; i++) {
        int odd = (i*2) - 1;

        for (int j = 1; j <= odd; j++) {
            if (j==1) {

                for (int x = n; x >=i; x--)
                    System.out.print("  ");
            }

            System.out.print(((j + i)-1) + " ");
        }
        System.out.println();
    }

输出是:

      1 
    2 3 4 
  3 4 5 6 7 
4 5 6 7 8 9 10

答案 2 :(得分:-1)

    int size = 10;
    for (int row = 1, last = 1; row <= size; ++row, last += 3) {
        for (int j = 1, max = size - row; j <= max; ++j)
            System.out.print("  ");
        for (int j = row; j <= last; ++j)
            System.out.print(" " + j);
        System.out.println();
    }
    // result:
    //                    1
    //                  2 3 4
    //                3 4 5 6 7
    //              4 5 6 7 8 9 10
    //            5 6 7 8 9 10 11 12 13
    //          6 7 8 9 10 11 12 13 14 15 16
    //        7 8 9 10 11 12 13 14 15 16 17 18 19
    //      8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
    //    9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
    //  10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

答案 3 :(得分:-1)

试试这个

类金字塔{

public static void main(String[] args) {
    int myLevel;
    int i, j, k;
    int x = 1;
    myLevel = 6;

    for (i = 1; i <= myLevel; i++) {

        for (k = 1; k <= myLevel - i; k++) {
            System.out.print(" ");
        }

        for (j = k + 1; j <= myLevel; j++) {
            System.out.print(x);
        }
        for (int l = myLevel; l > k - 1; l--) {
            System.out.print(x);
        }
        x++;
        System.out.println("");

    }
}

}