[英]What is the “continue” keyword and how does it work in Java?
我第一次看到這個關鍵字,我想知道是否有人可以向我解釋它的作用。
continue
關鍵字? continue
有點像goto
。 你熟悉break
嗎? 相比之下,更容易考慮它們:
break
終止循環(跳轉到它下面的代碼)。
continue
終止循環中當前迭代的其余代碼處理,但繼續循環。
沒有標簽的continue
語句將從最里面的while
或do
循環的條件和最里面的for
循環的更新表達式重新執行。 它通常用於提前終止循環的處理,從而避免深度嵌套的if
語句。 在下面的示例中, continue
將獲取下一行,而不處理循環中的以下語句。
while (getNext(line)) {
if (line.isEmpty() || line.isComment())
continue;
// More code here
}
帶有標簽, continue
將從帶有相應標簽的循環重新執行,而不是從最里面的循環開始。 這可以用來逃避深層嵌套的循環,或者只是為了清楚起見。
有時continue
也用作占位符,以使空循環體更加清晰。
for (count = 0; foo.moreData(); count++)
continue;
沒有標簽的相同語句也存在於 C 和 C++ 中。 Perl 中的等價物是next
。
不推薦使用這種類型的控制流,但如果您選擇這樣做,您也可以使用continue
來模擬有限形式的goto
。 在以下示例中, continue
將重新執行空的for (;;)
循環。
aLoopName: for (;;) {
// ...
while (someCondition)
// ...
if (otherCondition)
continue aLoopName;
讓我們看一個例子:
int sum = 0;
for(int i = 1; i <= 100 ; i++){
if(i % 2 == 0)
continue;
sum += i;
}
這將只得到從 1 到 100 的奇數的總和。
如果您將循環體視為子例程,那么continue
有點像return
。 相同的關鍵字存在於 C 中,用於相同的目的。 這是一個人為的例子:
for(int i=0; i < 10; ++i) {
if (i % 2 == 0) {
continue;
}
System.out.println(i);
}
這將僅打印出奇數。
通常,我將continue
(和break
)視為代碼可能使用一些重構的警告,尤其是在while
或for
循環聲明不是立即可見的情況下。 方法中間的return
也是如此,但原因略有不同。
正如其他人已經說過的, continue
移動到循環的下一次迭代,而break
移出封閉循環。
這些可能是維護定時炸彈,因為除了上下文之外,在continue
/ break
和它正在continue
/ break
的循環之間沒有直接聯系; 添加一個內部循環或將循環的“膽量”移動到一個單獨的方法中,並且您對continue
/ break
失敗有一個隱藏的影響。
恕我直言,最好將它們用作最后手段,然后確保它們的使用在循環的開始或結束時緊密組合在一起,以便下一個開發人員可以在一個屏幕中看到循環的“邊界” .
continue
、 break
和return
(方法末尾的 One True Return 除外)都屬於“隱藏 GOTO”的一般類別。 他們將循環和函數控制放在意想不到的地方,這最終會導致錯誤。
Java 中的“continue”表示跳到當前循環的結尾,意思是:如果編譯器看到continue in a loop,它將進入下一次迭代
示例:這是一個打印從 1 到 10 的奇數的代碼
每當編譯器看到繼續進入下一次迭代時,它就會忽略打印代碼
for (int i = 0; i < 10; i++) {
if (i%2 == 0) continue;
System.out.println(i+"");
}
正如已經提到的, continue
將跳過處理它下面的代碼,直到循環結束。 然后,你將移動到循環的條件和運行下一次迭代如果這種情況仍持有(或有一個標志,在表示為循環的條件)。
必須強調的是,在do - while
的情況下,您將在continue
之后移動到底部的條件,而不是在循環的開頭。
這就是為什么很多人無法正確回答以下代碼將生成什么的原因。
Random r = new Random();
Set<Integer> aSet= new HashSet<Integer>();
int anInt;
do {
anInt = r.nextInt(10);
if (anInt % 2 == 0)
continue;
System.out.println(anInt);
} while (aSet.add(anInt));
System.out.println(aSet);
*如果你的答案是aSet
只包含 100% 的奇數......你錯了!
Continue是 Java 中的一個關鍵字,用於跳過當前迭代。
假設你想打印從 1 到 100 的所有奇數
public class Main {
public static void main(String args[]) {
//Program to print all odd numbers from 1 to 100
for(int i=1 ; i<=100 ; i++) {
if(i % 2 == 0) {
continue;
}
System.out.println(i);
}
}
}
上述程序中的continue語句僅在i為偶數時跳過迭代,並在i為奇數時打印i的值。
Continue語句只是將您帶出循環,而不執行循環內的其余語句並觸發下一次迭代。
考慮 If Else 條件。 continue 語句執行條件中的內容並退出條件,即跳轉到下一次迭代或條件。 但是 Break 離開了循環。 考慮以下程序。 '
public class ContinueBreak {
public static void main(String[] args) {
String[] table={"aa","bb","cc","dd"};
for(String ss:table){
if("bb".equals(ss)){
continue;
}
System.out.println(ss);
if("cc".equals(ss)){
break;
}
}
System.out.println("Out of the loop.");
}
}
它將打印: aa cc Out of the loop。
如果您使用 break 代替 continue(After if.),它只會打印 aa 並退出循環。
如果滿足條件“bb”等於 ss: For Continue:它進入下一次迭代,即“cc”.equals(ss)。 對於 Break:它退出循環並打印“退出循環”。
我參加聚會有點晚了,但是...
值得一提的是, continue
對於所有工作都在控制循環的條件表達式中完成的空循環很有用。 例如:
while ((buffer[i++] = readChar()) >= 0)
continue;
在這種情況下,讀取字符並將其附加到buffer
的所有工作都在控制while
循環的表達式中完成。 continue
語句用作循環不需要主體的視覺指示符。
它比等價物更明顯一點:
while (...)
{ }
並且絕對比使用空語句更好(更安全)的編碼風格,例如:
while (...)
;
基本上在java中, continue 是一個語句。 continue 語句根據特定條件跳轉到循環的下一次迭代。
continue 語句通常與循環一起使用以跳過當前迭代。 有關在 Java 中使用它的方式和時間,請參閱下面的鏈接。
https://www.flowerbrackets.com/continue-statement-java/
希望有幫助!!
當您需要立即跳轉到循環的下一次迭代時,在循環控制結構中使用 continue 語句。
它可以與 for 循環或 while 循環一起使用。 Java continue 語句用於繼續循環。 它繼續程序的當前流程,並在指定條件下跳過剩余的代碼。
在內部循環的情況下,它僅繼續內部循環。
我們可以在所有類型的循環中使用 Java continue 語句,例如 for 循環、while 循環和 do-while 循環。
例如
class Example{
public static void main(String args[]){
System.out.println("Start");
for(int i=0; i<10; i++){
if(i==5){continue;}
System.out.println("i : "+i);
}
System.out.println("End.");
}
}
輸出:
Start
i : 0
i : 1
i : 2
i : 3
i : 4
i : 6
i : 7
i : 8
i : 9
End.
[數字5是跳過]
continue
必須在循環內,否則會顯示以下錯誤:
在循環外繼續
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.