Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么这段代码使用if语句而不是while循环? public void timerCallback() { 如果(计数_Java_If Statement_Interface_While Loop_Hardware Interface - Fatal编程技术网

Java 为什么这段代码使用if语句而不是while循环? public void timerCallback() { 如果(计数

Java 为什么这段代码使用if语句而不是while循环? public void timerCallback() { 如果(计数,java,if-statement,interface,while-loop,hardware-interface,Java,If Statement,Interface,While Loop,Hardware Interface,它的工作原理是将语句打印8次(延迟),然后终止程序。现在: public void timerCallback() { if (count < 8) { System.out.println("My timer woke up!"); this.setOutputState(this.pinNumber, this.pinState); this.pinState = !this.pinState; this.

它的工作原理是将语句打印8次(延迟),然后终止程序。现在:

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();
     }
}
public void timerCallback()
{
而(计数<8)
{
System.out.println(“我的计时器醒了!”);
this.setOutputState(this.pinNumber,this.pinState);
this.pinState=!this.pinState;
this.setTimer(this.timerDelay);
计数++;
} 
这是停止监视();
}

该代码一次只打印语句8次,然后终止。为什么呢

原始版本中的
if/else
的目的是在调用
stopMonitoring()
之前,为计时器提供八次“唤醒”和切换pin状态的机会。打印消息是次要的。因此,
if/else
检查
timerCallback()
是否已被调用8次。如果没有,好的,打印消息,再给它一次机会


通过在期间替换
,您只需打印消息8次,快速来回切换pin状态而不检查是否有帮助,然后进入
停止监视()。因此,在第一次调用
timerCallback()
,而不是第八次调用后,您将停止监视。

第一个示例的可能重复要求对“My timer Waked!”的每个输出调用
timerCallback()
,而您的第二个示例则在一个调用
timerCallback()
的循环内完成监视
while
将继续重新执行以下语句或块,直到条件失败<如果条件为真,则代码>如果
仅执行一次块。您需要知道
如果
之间的区别,而
…这里有一个提示。。。何时调用
timerCallback()
?看起来您希望在停止监视()之前调用它8次,那么是什么让它被调用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();
}