我尝试运行一个返回钻石环(字符串)的程序。没有编译错误,但是当我运行时,执行并没有停止。
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)
),实际上您正在远离它。因此获得无限循环。