2011-03-19 227 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