Java 为什么这样做,而计算是错误的?
当我为current5输入20时,minuteCurrent应该是240,但即使minuteCurrent超过240,do部分也会继续工作。为什么?我尝试了很多东西,但都没用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
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语句来做,是的。非常感谢。