Java 我的练习中有一个循环a问题
速度每秒更新一次,当速度超过343 m/s时,我想在控制台上打印以下内容: 费利克斯·德帕斯·拉维特斯·杜森 在速度超过343之前,仅打印一次 我该怎么做 当我做这个代码时,它将在每次速度超过343时打印;我能做什么条件使它只打印一次Java 我的练习中有一个循环a问题,java,Java,速度每秒更新一次,当速度超过343 m/s时,我想在控制台上打印以下内容: 费利克斯·德帕斯·拉维特斯·杜森 在速度超过343之前,仅打印一次 我该怎么做 当我做这个代码时,它将在每次速度超过343时打印;我能做什么条件使它只打印一次 import java.util.Scanner; class Parachutiste { private static Scanner clavier = new Scanner(System.in); public static voi
import java.util.Scanner;
class Parachutiste {
private static Scanner clavier = new Scanner(System.in);
public static void main(String[] args) {
double masse = 80.0;
do {
System.out.print("masse du parachutiste (>= 40) ? ");
masse = clavier.nextDouble();
} while (masse < 40.0);
double h0 = 39000.0;
do {
System.out.print("hauteur de depart du parachutiste (>= 250) ? ");
h0 = clavier.nextInt();
} while (h0 < 250.0);
double g=9.81;
double v0=0;
double t0=0;
double vitesse=v0;
double hauteur=h0;
double accel=g;
double t=t0;
double surface=2;
double q;
do{
if(vitesse>343){
System.out.println("## Felix depasse la vitesse du son");
}
double sm=surface/masse;
q=Math.exp((-sm*(t-t0)));
vitesse=(g/sm)*(1-q)+(v0*q);
hauteur = h0-((g/sm)*(t-t0))-((v0-(g/sm))/sm)*(1-q);
accel=g-(sm*vitesse);
if(hauteur>0){
// Utilisez cette ligne pour l'affichage
System.out.format("%.0f, %.4f, %.4f, %.5f\n",
t, hauteur, vitesse, accel);}
t++;
}
while(hauteur>0);
}
}
这应该行得通
在循环外声明此项:
boolean isPrinted = false;
然后将其替换为if循环:
if(!isPrinted)
if(vitesse>343) {
isPrinted = true;
System.out.println("## Felix depasse la vitesse du son");
}
}
@Salma您可以这样做,只需创建一个布尔变量,并用真值实例化它,然后在ifvitesse>343侧将其设置为额外条件,并将其重置为假,然后对于不同的输入值,它将只显示一次。像这样
at variable declaration section
boolean bool_once =True
if(vitesse>343 & bool_once){// and condition
.....
.....
bool_once = False // reset the value
如果vitesse超过343,是否要继续vitesse计算?如果没有,就简单地休息一下;在你的println声明之后。否则,使用布尔条件查找是否已打印消息。当我添加break时,我也将退出for循环,当我添加boolean时,它不起作用代码中没有for循环,布尔解决方案是由其他两个SO成员提供的,我认为它应该可以工作。很抱歉,我将退出do while loop当我添加此代码时,它不工作,每次velocity>343时都会发布Felix depasse la vitesse du son。您是否删除了原始的if循环并用我提供的块替换它?是的。。。这可能是因为do while循环的时间超过了,并且您编写的if循环每秒重复一次?请确保您在主while循环之外声明了布尔值,以便不会再次将其设置为false。