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