我的练习中有一个问题

时间:2014-10-03 13:43:19

标签: java

速度每秒更新一次,当速度超过343 m / s时我想在控制台上打印:

  

felix depasse la vitesse du son

在速度超过343之前,它只会打印一次。

我该怎么做?

当我执行此代码时,每次速度超过343时都会打印;我可以做什么条件让它只打印一次?

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

2 个答案:

答案 0 :(得分:0)

这应该有用。

在你的循环之外声明这个:

boolean isPrinted = false;

然后将其交换为if循环:

if(!isPrinted)
    if(vitesse>343) {
        isPrinted = true;
        System.out.println("## Felix depasse la vitesse du son");
    }
}

答案 1 :(得分:0)

@Salma你可以这样做只是创建一个布尔变量并用真值实例化它并将其设置为side if(vitesse&gt; 343)中的额外条件并将其重置为false然后对于不同的输入值它将仅显示一次。喜欢这个

at variable declaration  section

boolean bool_once =True

if(vitesse>343 & bool_once){// and condition 
  .....
  .....
 bool_once = False // reset the value