0

我是java的初学者,我真的需要这个答案。我一直在尝试按以下顺序创建一个三角形:

1
21
321
4321
54321

尽管我的语法是正确的,但我一直在经历非终止循环的逻辑错误。

这是我要修复的程序:

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

对此,我们将不胜感激。

4

5 回答 5

2

我不确定我是否完全理解您的问题,但以下代码为我创建了一个不错的三角形。

int i,j;
for(i = 1; i>= 1 && i < 10; i++)
{
    for(j = i; j <= i && j > 0; j = j - 1)
    {
        System.out.print(j);        
    }
    System.out.println(); 
}
于 2013-05-10T08:26:08.283 回答
2

因此,您会获得非终止循环

for(i=1;i>=1;i++)

该代码的意思是,如果i大于或等于 1 ( i>=1),则要循环主体,并且该i值始终在每个循环中递增1( i++),因此它始终具有大于的值,1并且此条件对于循环代码始终是正确的。所以你必须更正循环语句。

于 2013-05-10T08:21:44.733 回答
1

for(i=1;i>=1;i++)这是不正确的,因为 1 的增量总是会导致数字大于 1,因此循环只会在i = (2^31 -1)迭代后结束。因此,对于给定的输出,您的循环应如下所示:

for(int i=1;i<=5;i++)
    {
        for(int j=i;j>=1;j--)
        {
            System.out.print(j);        
        }
        System.out.println(); 
    }
于 2013-05-10T08:25:03.520 回答
0
public static void main(String[] args) 
{
    for(int x=1;x<=5;x++)
    {
        for(int j=x;j>=1;j--) 
        {
            System.out.print(j);
        }

        System.out.println();
    }
}
于 2014-12-11T11:28:36.037 回答
0

循环运行

for(j=i;j<=i;j=j-1) (assume i is 2 for the example)

j=2, is 2<=2, yes:run loop
j=j-1 (j=2-1=1)

j=1, is 1<=2, yes:run loop
j=j-1 (j=1-1=0)

j=0, is 0<=2, yes:run loop
j=j-1 (j=0-1=-1)

j=-1, is -1<=2, yes:run loop
j=j-1 (j=-1-1=-2)

ETC

j 越来越小,所以它总是小于 2。

我有完全相反的问题,它总是越来越大,所以它总是大于 1。

于 2013-05-10T08:37:48.613 回答