我是Java的初学者,无法弄清楚如何打印颠倒的数字三角形。每行的数值应减少1。防爆。行数; 6 打印:
666666
55555
4444
333
22
1
到目前为止,这是我想出来的; (int nr是来自用户的扫描输入)
for (int i = 1; i <= nr; i++) {
for (int j = 1; j <=nr; j++)
{
System.out.print(nr);
}
nr--;
System.out.println();
}
拥有nr--
;循环越来越短,我无法弄清楚如何保持循环“nr”次,但仍然减少打印出的数字量。
答案 0 :(得分:1)
你是对的,你需要写一个循环来为每个数字打印一行,从nr开始减1,直到你到达0.但你还需要在每一行打印一个可变数量的数字。为此,可以使用嵌套循环打印所需数量的数字。
由于你以nr开始打印并减少直到达到1,你可以尝试编写一个递减而不是递增的外循环。然后使用嵌套循环打印所需次数的数字。例如:
for (int i = nr; i > 0; i--) {
for (int j = 0; j < i; j++) {
System.out.print(i);
}
System.out.println();
}
答案 1 :(得分:1)
在这种情况下,您可以使用一个 while 循环 和两个 递减 变量:
i
- 行号 - 从 6
到 1
j
- 行中的重复次数 - 从 i
到 1
:int i = 6, j = i;
while (i > 0) {
if (j > 0) {
// print 'i' element 'j' times
System.out.print(i);
--j;
} else {
// start new line
System.out.println();
j = --i;
}
}
输出:
666666
55555
4444
333
22
1
答案 2 :(得分:0)
你的问题是你正在改变,试试:
int original_nr = nr;
for (int i = 1; i <= original_nr; i++) {
for (int j = 1; j <=nr; j++)
{
System.out.print(nr);
}
nr--;
System.out.println();
}
答案 3 :(得分:0)
您不能减少nr
并仍然将其用作循环的上限。实际上,您应该将nr
视为不可变。
相反,将外循环更改为从nr
向下计数到1
,将内循环从1
更改为i
,并打印i
的值}。
for (int i = nr; i > 0; i--) {
for (int j = 0; j < i; j++) {
System.out.print(i);
}
System.out.println();
}