while while循环:在循环内执行一次

时间:2017-04-09 14:56:27

标签: java algorithm

我想在超过声速之后在循环中打印一条信息 我在以下主题中发现有人解释如何使用布尔值进行操作,但我没有得到它。 这就是我尝试过的:

"language":{
          "noResults" : function () { return ''; }
        }

我的代码

boolean oneTime = (vitesse > 343)
if (oneTime)
    System.out.println("Felix depasse la vitesse du son");

execute an instruction only one time in a do while loop in java

3 个答案:

答案 0 :(得分:1)

如果你想让循环继续但是在第一次之后停止打印消息,你需要像这样的结构(伪代码):

boolean oneTime = false;
while (...) {
    ...
    if (<some test for printing>) {
        if (!oneTime) {
            oneTime = true;
            <print your message>
        }
    }
    ...
    if (<some other test for printing>) {
        if (!oneTime) {
            oneTime = true;
            <print your message>
        }
    }
    ...
}

如果您希望在打印消息时退出循环,请将!firstTime添加到while循环条件中(如果您希望完成当前循环迭代)或使用break立即结束循环。如果您使用break,那么您根本不需要oneTime标记。要打破嵌套的while循环,请参阅this thread

答案 1 :(得分:0)

在第一个循环之前使用false初始化布尔值,并在打印出felix消息时将其设置为true。仅当符合条件且布尔值仍为false时,才评估布尔值并打印felix消息。你可以调用那个布尔值oneTime。

if (speed > 343 && !oneTime) {
    oneTime = true;
    System.out.println("## Felix depasse la vitesse du son");
} else if (accel < 0.5 && !oneTime) {
    oneTime = true;
    System.out.println("## Felix depasse la vitesse du son");
}
System.out.printf("%.0f, %.4f, %.4f, %.5f\n",t, hauteur, vitesse, accel);

答案 2 :(得分:0)

我注意到你的第二个循环以 while(速度&lt; 343&amp;&amp; accel&gt; 0.5)开头,说,它永远不会使你的if语句真实,因为它永远不会达到343 如果(速度> 343)总是假的如果你希望它至少运行一次就可以使用

    do{
    ...
    ...
    } while(speed < 343 && accel>0.5);