颠倒三角形的数字我Java

问题描述:

我是Java的初学者,无法弄清楚如何打印倒数三角形的数字。这些数字应该每行减少1。防爆。行数; 6 打印:颠倒三角形的数字我Java

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

两个变量,也许? – rghome

你的问题是,你正在改变NR,尝试:

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(); 

} 

不能减少nr,并仍然使用它作为循环上限。实际上你应该认为nr不可变的

相反,改变外环从nr向下计数到1,和内环计数从1i,和i打印价值。

for (int i = nr; i > 0; i--) { 
    for (int j = 0; j < i; j++) { 
     System.out.print(i); 
    } 
    System.out.println(); 
} 

你是正确的,你需要写一个循环来打印行每个号,从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(); 
} 
+0

谢谢!这可能是一个愚蠢的问题,但如果int我开始为0,并减少-1,为什么不(i)打印出-1,-2等? – floval

+0

Int我从nr开始,不是0.它减小,直到for循环中的条件i> 0为假。当我从1递减到0并且循环中断时,该条件变为false。 – Spencer