Java编号金字塔在2年代上升

时间:2017-09-21 22:37:12

标签: java

我需要创建一个数字金字塔,它将是一个向上的金字塔。看看这张图片:

pic1

然而,当我搞乱(i ++)或(j ++)时,它会重复两次金字塔的每一行,例如:1 1 13 13,如下图所示:

pic2

如何阻止每一行重复但仍然像图像1一样?这是我的代码:

System.out.println("What number would you like?");
    int x = input.nextInt();
    System.out.println("Would you like 1. odd 2. even 3.both types of numbers? Please enter the NUMBER");

    int numbertype = input.nextInt();
    int y;
    //ODD
    if (numbertype == 1) {
        y = 2;

        for (int i = 1; i <= x; i++) {
            for (int j = 1; j <= i; j+=2) {
                System.out.print(j);
            }
            System.out.print("\n");
        }
        for (int p = x; p >= 1; p--) {
            for (int r = 1; r <= p; r+=2) {
                System.out.print(r);
            }
            System.out.print("\n");
        }
    }

非常感谢帮助!

1 个答案:

答案 0 :(得分:0)

这可以在一个循环中完成。在开始使用for循环之前,最好总是尝试找到一个更简单的解决方案。

int i = 1;
while (i >= 1) {
    IntStream si = IntStream.rangeClosed(1, i);
    String s = si.mapToObj(Integer::toString).collect(Collectors.joining(" "));
    System.out.println(s);
    i += y;
    if (i > x) {
        i -= 2*y;
        y = -y;
    }
}

此处i将从1增加到x递增y(我假设你想使用它而不是常量)。一旦x被超越,i将被降低,并通过否定y来减少相同的数量。另一个代码就是创建一个int范围并加入它。