2016-12-20 8 views
-1

Я попытался запустить программу, которая возвращает кольцо Diamond (String). Ошибок в компиляции нет, но когда я запускаю его, выполнение не останавливается.Ошибка бесконечного цикла в 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)); 
    } 
} 

Этот мой код, я думаю, что бесконечный цикл, но я не могу его обнаружить.

+5

'c = 0; c SomeJavaGuy

ответ

1

В своем первом изменении for петли c-- для c++ как:

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

Как вы сравниваете c с более высоким значением, если вы уменьшаете c вы никогда не достигнете этого значения (abs(j)), на самом деле вы дистанцироваться от него. Таким образом, получается бесконечный цикл.

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

Вы декремента с и сравнивая его с положительным значением, так что никогда не будет java.lang.Math.abs (J), если J не было 0

Попробуйте это:

int c=0;c<java.lang.Math.abs(j);c++ 
Смежные вопросы