2015-07-31 4 views
2

Это простой код, на котором я практиковал, так как я совершенно не знаком с Java. Это в рамках компонента Day8 в kilobot учебника доступен в Интернете здесь: http://www.kilobolt.com/day-8-loopingПростой код не работает

public class Looping { 
public static void main(String args[]) { 
    boolean EarthIsSpinning = false; 
    int counter = 9; 

    while(counter >= 1){ 
     counter--; 
     System.out.println(counter); 
     if (counter == 4){ 
      EarthIsSpinning = true; 
     } 
     else{ 
      EarthIsSpinning = false; 
     } 

     while (EarthIsSpinning){ 
      System.out.println("The earth is still spinning"); 
     } 
    } 
} 

И я редактировал воображаемый учебник, который я должен был сделать. поэтому я задавался вопросом, почему консоль продолжает цикл «Земля все еще вращается», и не только в 4, где EarthIsSpinning = True, поскольку EarthIsSpinning действует только в том случае, когда счетчик равен 4.

+0

еще один 'while' необходим? – Satya

+6

Вам нужно 'if (EarthIsSpinning)'. Не 'while'. – Codebender

+0

Пожалуйста, посмотрите EarthIsSpinning, находясь внутри основного цикла while так, чтобы его можно было остановить, чтобы переместить следующую итерацию внешнего цикла while – Nagappan

ответ

3

, когда счетчик = 4, он достигает этого в то время как петля

while (EarthIsSpinning){ 
     System.out.println("The earth is still spinning"); 
     } 

и она никогда не выходит из этого цикла в исходный время цикла счетчик остается на 4 и EarthIsSpinning будет оставаться верным никогда не выходя, что в то время как петли

1

Так counter первоначально в 9. Тогда вы вводите внешний цикл while.

Внутри вы уменьшаете counter и проверить, если это 4. Так как это не так, и EarthIsSpinning устанавливаются в false внутренней, пока цикл не выполняются, и вы возвращаетесь к началу цикла.

Это повторяется до тех пор, пока счетчик не станет равным 4, и в этом пункте EarthIsSpinning установлено значение true, а внутренний цикл while работает постоянно, так как его значение никогда не изменяется.

Как и Codebender, вы, скорее всего, хотите использовать инструкцию if вместо некоторого времени.

0
public class Looping { 
public static void main(String args[]) { 
boolean EarthIsSpinning = false; 
int counter = 9; 



    while(counter >= 1) 
    { 
     counter--; 
     System.out.println(counter); 

     if (counter == 4) 
     { 
     EarthIsSpinning = true; 
     } 

     else 
     { 
     EarthIsSpinning = false; 
     } 

     if(EarthIsSpinning) 
     { 
     System.out.println("The earth is still spinning"); 
     } 
    } 
    } 
} 
0

Почему бы вам не сделать что:

public class Looping { 
    public static void main(String args[]) { 
     int counter = 9; 

     while(counter >= 1){ 
      counter--; 
      if (counter == 4){ 
       System.out.println("The earth is still spinning"); 
      }else{ 
       System.out.println(counter); 
      } 
     } 
    } 
} 
1
public class Looping { 
public static void main(String args[]) { 
    boolean EarthIsSpinning = false; 
    int counter = 9; 
    while(counter >= 1){ 
     counter--; 
     System.out.println(counter); 
    if (counter == 4){ 
      EarthIsSpinning = true; 
      System.out.println("The earth is still spinning"); 
     } 
    else{ 
     EarthIsSpinning = false; 
    } 
    } 
} 
} 
0

Есть два способа вы можете сделать сделать это правильно. Измените второе, а затем, или сохраните второе, но измените флаг earthIsSpinning на false.

public static void main(String args[]) { 
     //flag to check the Spin 
     boolean earthIsSpinning = false; 
     //init the counter 
     int counter = 9; 

     //loop until counter is 0 
     while(counter >= 1){ 
      counter--; 
      System.out.println(counter); 

      //condition to change flag to true 
      if (counter == 4){ 
       earthIsSpinning = true; 
      } else{ 
       earthIsSpinning = false; 
      } 
      //print the message if flag is true 
      if (earthIsSpinning){ 
       System.out.println("The earth is still spinning: " + counter); 
      } 
     } 
    } 

Or you can do 

public static void main(String args[]) { 
    //flag to check the Spin 
    boolean earthIsSpinning = false; 
    //init the counter 
    int counter = 9; 

    //loop until counter is 0 
    while(counter >= 1){ 
     counter--; 
     System.out.println(counter); 

     //condition to change flag to true 
     if (counter == 4){ 
      earthIsSpinning = true; 
     } else{ 
      earthIsSpinning = false; 
     } 
     //print the message if flag is true 
     while (earthIsSpinning){ 
      System.out.println("The earth is still spinning: " + counter); 
      earthIsSpinning = false; 
     } 
    } 
} 
0

у вас есть логическая ошибка в коде

это условие цикла всегда верно и не остановит навсегда:

while (EarthIsSpinning){ 
      System.out.println("The earth is still spinning"); 
     } 

его бесконечный цикл, так как при counter == 4, переменную Ьоо EarthIsSpinning = true; так, когда вам введите второй цикл while, условие не будет ломаться.

Смежные вопросы