【问题标题】:Nested for loop for a triangle三角形的嵌套for循环
【发布时间】:2013-05-10 08:18:04
【问题描述】:

我是 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(); 
    }

非常感谢您的帮助。

【问题讨论】:

    标签: java loops for-loop nested


    【解决方案1】:

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

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

    代码的意思是,如果i大于或等于1(i&gt;=1),你想循环body,并且这个i的值总是在每个循环中增加1i++),所以它的值总是大于1,并且这个条件对于循环代码总是正确的。所以你必须更正循环语句。

    【讨论】:

      【解决方案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(); 
      }
      

      【讨论】:

      • @Mateusz 你会从中获得什么附加
      • @Mateusz 这在很大程度上是风格问题
      • @Mateusz 就目前而言,它实现了这一点,活动行上的 println() 将结束活动行并移动到下一行。它不会添加一个额外的空白行(除非之前有一个 println() 可以“启动”一个新的活动行)
      【解决方案3】:

      for(i=1;i&gt;=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(); 
          }
      

      【讨论】:

      • "for(i=1;i&gt;=1;i++) 是非结束循环" 好吧,假设iint,它是一个真的很长 循环,但一旦i 翻转,它最终会结束。 ;-)
      【解决方案4】:

      循环运行

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

      j=2, is 2 j=j-1 (j=2-1=1)

      j=1, is 1 j=j-1 (j=1-1=0)

      j=0, is 0 j=j-1 (j=0-1=-1)

      j=-1, is -1 j=j-1 (j=-1-1=-2)

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

      我的问题正好相反,它总是变大,所以它总是大于 1。

      【讨论】:

      • 附注如果您使用的是 IDE(如 eclipse 或 netbeans),请尝试在调试器中运行这样的程序来观察它的发生
      • @user2369194 很高兴听到,感谢您回来更新我们!考虑接受(勾号)对您最有帮助的答案
      【解决方案5】:
      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();
          }
      }
      

      【讨论】:

      • 请说明您的代码为其他读者的利益所做的工作。
      • @jens 我认为这只是我们必须打印的模式这就是我编写并粘贴代码的原因...我会在下一次看到我可以解释...无论如何谢谢...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多