Java 倒三角形

Java 倒三角形,java,for-loop,nested-loops,ascii-art,Java,For Loop,Nested Loops,Ascii Art,我是Java的初学者,不知道如何打印倒三角形的数字。每行数字的值应减少1。例如:行数:6 打印: 666666 55555 4444 333 22 1 到目前为止,这是我想到的;(int nr是用户扫描输入) 对于(int i=1;i您的问题是您正在更改nr,请尝试: int-original\u nr=nr; 对于(int i=1;i您不能减少 nr>代码>,仍然使用它作为循环中的上限。实际上,您应该考虑 NR < /代码>为不可变< /强> 。 相反,将外循环从nr计数改为1,将内循环从1

我是Java的初学者,不知道如何打印倒三角形的数字。每行数字的值应减少1。例如:行数:
6

打印:

666666
55555
4444
333
22
1
到目前为止,这是我想到的;(
int nr
是用户扫描输入)


对于(int i=1;i您的问题是您正在更改
nr
,请尝试:

int-original\u nr=nr;

对于(int i=1;i您不能减少<代码> 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();
}
for(int i=nr;i>0;i--){
对于(int j=0;j
你是对的,你需要写一个循环来为每一个数字打印一行,从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();
}
for(int i=nr;i>0;i--){
对于(int j=0;j
在这种情况下,您可以使用一个while循环和两个递减变量:

  • i
    -行数-从
    6
    1
  • j
    -行中的重复次数-从
    i
    1
inti=6,j=i;
而(i>0){
如果(j>0){
//打印“i”元素“j”次
系统输出打印(一);
--j;
}否则{
//开行
System.out.println();
j=-i;
}
}
输出:

666666
55555
4444
333
22
1


另请参见:

谢谢!这可能是一个愚蠢的问题,但如果int i开始时为0,并减少-1,为什么不(i)打印为-1,-2等?int i开始时为nr,而不是0。它会减少,直到for循环中的条件i>0为false。当我从1减到0时,该条件变为false,循环中断。