Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么这样做,而计算是错误的?_Java - Fatal编程技术网

Java 为什么这样做,而计算是错误的?

Java 为什么这样做,而计算是错误的?,java,Java,当我为current5输入20时,minuteCurrent应该是240,但即使minuteCurrent超过240,do部分也会继续工作。为什么?我尝试了很多东西,但都没用 import java.util.Scanner; class Person { String name; int heartRatePer5; int current5; void alarm() { for (int i = 0; i < 3; i++) System.out.p

当我为current5输入20时,minuteCurrent应该是240,但即使minuteCurrent超过240,do部分也会继续工作。为什么?我尝试了很多东西,但都没用

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

}
import java.util.Scanner;
班主任{
字符串名;
int heartRatePer5;
int-current5;
无效报警(){
对于(int i=0;i<3;i++)
系统输出打印(!!!);
System.out.println();
}
无效停止报警(){
System.out.println(“报警停止”);
}
}
公共类应用程序{
公共静态void main(字符串[]args){
Person person1=新的Person();
扫描仪输入=新扫描仪(System.in);
System.out.println(“输入当前每5秒的心率:”);
person1.current5=input.nextInt();
分钟电流=人1.5*12;
//分钟电流=0;
做{
System.out.println(“规范化”);
person1.停止报警();
//minuteCurrent=input.nextInt();
打破
}
而(分钟电流<220);
}

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

请注意,while循环条件现在移动到do while之后 环体。do while循环体始终至少执行一次, 然后在执行while循环条件时重复执行 对

你怎么能修好它?将while循环更改为如下所示:

while (minuteCurrent < 220) {
            System.out.println("Normalizing.");
            person1.stopAlarm();
            break;
}
while (minuteCurrent < 220) {
    minuteCurrent = input.nextInt();
}
while(分钟电流<220){
System.out.println(“规范化”);
person1.停止报警();
打破
}
另外,我不知道为什么要使用while循环。只使用if语句会更有意义——它与在末尾加上中断的while循环是一样的

do
即使分钟电流超过240,零件也会继续工作

当你说继续工作:我想你的意思是:只工作一次

这是正常的,;这是
do
的保证

也许您想要一个常规的
while
循环

感应情况应如下所示:

while (minuteCurrent < 220) {
            System.out.println("Normalizing.");
            person1.stopAlarm();
            break;
}
while (minuteCurrent < 220) {
    minuteCurrent = input.nextInt();
}
while(分钟电流<220){
minuteCurrent=input.nextInt();
}

我不清楚
person1.stopAlarm()的效果是什么,或要打印“正常化”消息的次数。因此,这可能不是您的算法的完整修复。但我认为,从
do-while
循环切换到常规
while
循环至少可以解决您所描述的困惑。

您的
do-while
总是会在第一次运行时停止,因为您在最后有
break
。你的意思是在它之前有一个if语句吗?请把你的代码精简到一个if语句。不需要整个“报警”。将while语句放在do???@MaxvonHippel Yes下面一整行是否有效。为什么不呢?!我希望它不断地询问它是否不低于220。我应该可以用if语句来做,是的。非常感谢。