当前位置: 代码迷 >> java >> 简单的循环代码不起作用
  详细解决方案

简单的循环代码不起作用

热度:57   发布时间:2023-07-25 19:09:49.0

因为我是Java的新手,所以这是我正在练习的简单代码。 这是在下面在线发布的公斤机器人教程的Day8组件之下的: ://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时才是真实。

当counter = 4时,它到达了while循环

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

并且它永远不会退出,而循环会回到原始的while循环中,计数器保持在4,EarthIsSpinning将保持为true,而不会退出while循环

因此counter最初是9。然后进入外部while循环。

在内部,您递减counter并检查它是否为4。由于不是,并且EarthIsSpinning设置为false因此内部while循环未执行,然后返回while循环的开始。

重复执行直到计数器变为4,此时EarthIsSpinning设置为true,并且内部while循环永远运行,因为它的值从未更改。

就像Codebender所评论的那样,您可能希望使用if语句而不是一会儿。

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

您为什么不这样做:

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

有两种方法可以使它正确进行。 将第二个时间更改为if或保留第二个时间,但将标志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;
        }
    }
}

您的代码中有逻辑错误

此循环条件始终为true,不会永远停止:

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

它的无限循环,因为当counter == 4 ,布尔变量EarthIsSpinning = true; 因此,当您输入第二个while循环时,条件不会中断。

  相关解决方案