Java程序中的错误无限循环



我尝试运行一个返回钻石环(字符串)的程序。没有编译错误,但是当我运行时,执行并没有停止。

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

这是我的代码,我认为是无限的循环,但我看不到它。

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

您正在减少c并将其比较为正值,因此除非j为0

尝试以下操作:

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

在您的第一个for中,c--更改CC_2,例如:

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

当您比较具有较高值的c时,如果您降低c,您将永远无法达到此值(abs(j)),实际上您正在远离它。因此获得无限循环。

相关内容

  • 没有找到相关文章

最新更新