java程序中的错误无限循环

时间:2016-12-20 12:03:00

标签: java

我尝试运行一个返回Diamond环(String)的程序。 编译时没有错误,但是当我运行它时,执行没有停止。

class Diamond {
  public static String print(int n) {
      int j=n/2,i=0,k=1;
      String ch="";
      while(i<n){
         for(int c=0;c<java.lang.Math.abs(j);c--)
             ch=ch + " ";
         for(int r=0;r<k;r++)
             ch=ch + "*";
          j--;
          if(j<=-1){
              k=k-2;
           }
          else{
              k=k+2;
          }
          j--;
          ch=ch + "\n";
          i++;
}
    return ch ;              
}
    public static void main(String []args){
      System.out.println(Diamond.print(5));
    }
}

这是我的代码,我认为这是一个无限循环,但我无法发现它。

2 个答案:

答案 0 :(得分:1)

for的第一个c--循环更改c++中,例如:

for(int c=0;c<java.lang.Math.abs(j);c++)

当您将c与较高的值进行比较时,如果您递减c,您将永远不会达到此值(abs(j)),实际上您正在远离它。从而获得无限循环。

答案 1 :(得分:1)

int c=0;c<java.lang.Math.abs(j);c--

您正在递减c并将其与正值进行比较,因此除非j为0,否则它将永远不会获得java.lang.Math.abs(j)

试试这个:

int c=0;c<java.lang.Math.abs(j);c++