当我为current5输入20时,minuteCurrent应该是240,但是即使minuteCurrent超过240,部分也会继续工作。为什么?我尝试了很多东西,但他们没有帮助。
import java.util.Scanner;
class Person {
String name;
int heartRatePer5;
int current5;
void alarm() {
for (int i = 0; i < 3; i++)
System.out.print("!!! ");
System.out.println();
}
void stopAlarm() {
System.out.println("Alarm stopped");
}
}
public class App{
public static void main(String[] args) {
Person person1 = new Person();
Scanner input = new Scanner(System.in);
System.out.println("Enter the current heart rate per 5 seconds: ");
person1.current5 = input.nextInt();
int minuteCurrent = person1.current5 * 12;
// minuteCurrent = 0;
do {
System.out.println("Normalizing.");
person1.stopAlarm();
//minuteCurrent = input.nextInt();
break;
}
while (minuteCurrent < 220);
}
}
答案 0 :(得分:1)
while循环的工作方式与while循环不同。
注意while循环条件现在在do while之后移动 循环体。 do while循环体总是至少执行一次, 然后在while循环条件下重复执行 真。
你怎么解决?将while循环更改为如下所示:
while (minuteCurrent < 220) {
System.out.println("Normalizing.");
person1.stopAlarm();
break;
}
另外,我不知道你为什么要使用while循环。使用if语句会更有意义 - 它与while循环相同,最后有一个break。
答案 1 :(得分:0)
即使minuteCurrent超过240,
do
部分也会继续工作
当你说保持工作时:我认为你的意思是: 完全一次 。
这是正常的;这是do
的保证。 The statements within the do
block are always executed at least once
也许您想要一个常规的while
循环?
归纳案例应如下所示:
while (minuteCurrent < 220) {
minuteCurrent = input.nextInt();
}
我不清楚person1.stopAlarm();
的影响是什么,或者你想打印多少次&#34;正常化&#34;信息。所以这可能不是您的算法的完整修复。但我认为从do-while
切换到常规while
循环应该至少可以解决您所描述的混乱。