【发布时间】:2016-04-08 09:42:22
【问题描述】:
public void timerCallback()
{
if (count < 8)
{
System.out.println("My timer woke up!");
this.setOutputState(this.pinNumber, this.pinState);
this.pinState = !this.pinState;
this.setTimer(this.timerDelay);
count++;
}else
{
this.stopMonitoring();
}
}
从某种意义上说,它打印语句(有延迟)8 次,然后终止程序。现在这样:
public void timerCallback()
{
while (count < 8)
{
System.out.println("My timer woke up!");
this.setOutputState(this.pinNumber, this.pinState);
this.pinState = !this.pinState;
this.setTimer(this.timerDelay);
count++;
}
this.stopMonitoring();
}
该代码一次只打印该语句 8 次,然后终止。这是为什么?
【问题讨论】:
-
您的第一个示例要求为“我的计时器醒来!”的 每个 输出调用
timerCallback(),而您的第二个示例在 一个致电timerCallback()。while将继续重新执行下面的语句或阻塞,直到条件失败。if仅在条件为真时执行该块一次。 -
你会想知道
if和while之间的区别... -
这里有一个提示...
timerCallback()何时被调用?看起来你希望它在stopMonitoring()之前被调用 8 次,那么是什么让它被调用了 8 次? -
不是递归问题的副本。这个问题都是关于触发回调的。这里没有递归。 (尽管由于
while/if混淆,它确实有一些相似之处......)
标签: java if-statement interface while-loop hardware-interface