问题描述
因为我是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时才是真实。
1楼
当counter = 4时,它到达了while循环
while (EarthIsSpinning){
System.out.println("The earth is still spinning");
}
并且它永远不会退出,而循环会回到原始的while循环中,计数器保持在4,EarthIsSpinning将保持为true,而不会退出while循环
2楼
因此counter
最初是9。然后进入外部while循环。
在内部,您递减counter
并检查它是否为4。由于不是,并且EarthIsSpinning
设置为false
因此内部while循环未执行,然后返回while循环的开始。
重复执行直到计数器变为4,此时EarthIsSpinning
设置为true,并且内部while循环永远运行,因为它的值从未更改。
就像Codebender所评论的那样,您可能希望使用if语句而不是一会儿。
3楼
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;
}
}
}
}
4楼
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");
}
}
}
}
5楼
您为什么不这样做:
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);
}
}
}
}
6楼
有两种方法可以使它正确进行。 将第二个时间更改为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;
}
}
}
7楼
您的代码中有逻辑错误
此循环条件始终为true,不会永远停止:
while (EarthIsSpinning){
System.out.println("The earth is still spinning");
}
它的无限循环,因为当counter == 4
,布尔变量EarthIsSpinning = true;
因此,当您输入第二个while循环时,条件不会中断。