这可能非常简单,但我无法找到它......
我正在编写一个计算跳伞运动员跌倒参数的程序,并逐秒显示结果(高度,速度和加速度)直到他到达地面。
在某一时刻(当海拔高度小于2500米时),他将打开降落伞。程序应该打印(只有一次)" ## Felix打开他的降落伞"就在他达到2500米之前。
所以结果是: (时间,高度,速度,加速度) 131,2698.0264,377.5607,0.37098 " ## Felix打开他的降落伞" 132,2320.2818,377.9270,0.36182 133,1991.2751,284.9225,-79.22827 ......
但我无法找到办法。我的程序在满足条件后打印行: (时间,高度,速度,加速度) 131,2698.0264,377.5607,0.37098 132,2320.2818,377.9270,0.36182 " ## Felix打开他的降落伞" 133,1991.2751,284.9225,-79.22827 ..
以下是代码:
import java.util.Scanner;
类Parachutiste {
public static void main(String[] args) {
Scanner clavier = new Scanner(System.in);
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.nextDouble();
} while (h0 < 250.0);
/*******************************************
* Completez le programme a partir d'ici.
*******************************************/
final double g = 9.81;
double v0 = 0;
double t0 = 0;
double sourface = 2.00;
double vitesse = v0;
double hauteur = h0;
double accel = g;
double t = t0;
boolean printed = false;
System.out.printf("%.0f, %.4f, %.4f, %.5f\n", t, hauteur, vitesse, accel);
while (hauteur > 0) {
++t;
double s = sourface / masse;
double q = Math.exp(-s * (t - t0));
vitesse = (g/s) * (1-q) + v0 * q;
hauteur = h0 - (g/s) * (t-t0) - ((v0 - (g/s)) / s) * (1-q);
accel = g - s * vitesse;
if (hauteur > 0) {
System.out.printf("%.0f, %.4f, %.4f, %.5f\n", t, hauteur, vitesse, accel);
if (hauteur < 2500) {
sourface = 25.0;
t0 = t;
v0 = vitesse;
h0 = hauteur;
}
**if ((hauteur <= 2500) && (printed == false)) {
System.out.println("## Felix ouvre son parachute");
printed = true;**
}
}
}
/*******************************************
* Ne rien modifier apres cette ligne.
*******************************************/
clavier.close();
}
}
答案 0 :(得分:0)
为什么不在打印当前高度的代码之前移动打印“Felix打开降落伞”行的条件?
while (hauteur > 0) {
++t;
double s = sourface / masse;
double q = Math.exp(-s * (t - t0));
vitesse = (g/s) * (1-q) + v0 * q;
hauteur = h0 - (g/s) * (t-t0) - ((v0 - (g/s)) / s) * (1-q);
accel = g - s * vitesse;
if (hauteur > 0) {
if (hauteur < 2500) {
sourface = 25.0;
t0 = t;
v0 = vitesse;
h0 = hauteur;
}
if ((hauteur <= 2500) && !printed) {
System.out.println("## Felix ouvre son parachute");
printed = true;
}
System.out.printf("%.0f, %.4f, %.4f, %.5f\n", t, hauteur, vitesse, accel);
}
}