我尝试运行一个返回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));
}
}
这是我的代码,我认为这是一个无限循环,但我无法发现它。
答案 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++