为什么这样做 - 虽然计算错了?

时间:2016-11-12 16:11:51

标签: java

当我为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);

}

}

2 个答案:

答案 0 :(得分:1)

while循环的工作方式与while循环不同。

  

注意while循环条件现在在do while之后移动   循环体。 do while循环体总是至少执行一次,   然后在while循环条件下重复执行   真。

See more here.

你怎么解决?将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循环应该至少可以解决您所描述的混乱。