2011-03-19 188 views
2

我在for循环内有一个if语句。当if声明中的条件为真时,我想跳出for循环。跳过for循环,如果语句内部满足循环

这里正是我有什么

if (data < voltage && data2 < voltage){ 
digitalWrite(pump, HIGH); 
digitalWrite(valve, HIGH); 
digitalWrite(valve2, HIGH); 
for(int i=0; i<10; i++){ 
    lcd.setCursor(0, 2); 
    lcd.print("S_1:"); 
    if (data > 260 && data < 295) 
    lcd.print("MID"); 
    else if (data < 260) 
    lcd.print("LOW"); 
    else 
    lcd.print("HIGH"); 
    lcd.setCursor(7,0); 
    lcd.print("Pump:ON"); 
    lcd.setCursor(0,1); 
    lcd.print("V1:ON"); 
    lcd.setCursor(9, 2); 
    lcd.print("S_2:"); 
    if (data2 > 260 && data2 < 295) 
    lcd.print("MID"); 
    else if (data2 < 260) 
    lcd.print("LOW"); 
    else 
    lcd.print("HIGH"); 
    lcd.setCursor(7,1); 
    lcd.print("V2:ON"); 
    lcd.setCursor(14,1); 
    lcd.print("V3:OFF"); 
    sum += data; 
    sum2+= data2; 
    delay(1000); 
} 
average = sum/10; 
average2 = sum2/10; 
if(average > voltage || average2 > voltage){ 
    digitalWrite(pump, LOW); 
    digitalWrite(valve, LOW); 
    digitalWrite(valve2, LOW); 
} 
sum = 0; 
sum2 = 0; 
lcd.clear(); 

}

其接缝不会扔了整个情况。

回答

2

使用break;关键字来做到这一点。

+0

我有什么是这个 – mohsen 2011-03-21 07:39:17

3

您可以使用break关键字。

for (int i = 0; i < 100; i++){ 
    if (i == 2){ 
    break; 
    } 
} 

而且,这是由OOD人gotoish代码考虑,更喜欢将断点条件中的条件:

boolean shouldBreak = false; 
for (int i = 0; i < 100 && !shouldBreak; i++){ 
    if (i == 2){ 
    shouldBreak = true; 
    } 
} 
+2

好了,'break'可能是因为作为'if'中的返回语句变成gotoish。除此之外,第一种方法更具可读性,所以我建议使用语言为您提供的工具。 – Alfonso 2011-03-19 11:29:05

+1

我强烈建议您阅读关于结构化编程的Dijkstra一入口和一入口观点。 – Alexis 2011-03-19 11:36:05

+1

我已经做到了,但是我不能说我和他在一个退出点时的意见是一样的。如果你需要求助于多余的布尔变量来替换放置好的'return'语句,那么在我看来这是一个错误的方法。 – Alfonso 2011-03-19 11:42:44