我需要创建一个数字金字塔,它将是一个向上的金字塔。看看这张图片:
然而,当我搞乱(i ++)或(j ++)时,它会重复两次金字塔的每一行,例如:1 1 13 13
,如下图所示:
如何阻止每一行重复但仍然像图像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");
}
}
非常感谢帮助!
答案 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范围并加入它。