簡體   English   中英

什么是“continue”關鍵字?它在 Java 中是如何工作的?

[英]What is the “continue” keyword and how does it work in Java?

我第一次看到這個關鍵字,我想知道是否有人可以向我解釋它的作用。

  • 什么是continue關鍵字?
  • 它是如何工作的?
  • 什么時候使用?

continue有點像goto 你熟悉break嗎? 相比之下,更容易考慮它們:

  • break終止循環(跳轉到它下面的代碼)。

  • continue終止循環中當前迭代的其余代碼處理,但繼續循環。

沒有標簽的continue語句將從最里面的whiledo循環的條件和最里面的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 )視為代碼可能使用一些重構的警告,尤其是在whilefor循環聲明不是立即可見的情況下。 方法中間的return也是如此,但原因略有不同。

正如其他人已經說過的, continue移動到循環的下一次迭代,而break移出封閉循環。

這些可能是維護定時炸彈,因為除了上下文之外,在continue / break和它正在continue / break的循環之間沒有直接聯系; 添加一個內部循環或將循環的“膽量”移動到一個單獨的方法中,並且您對continue / break失敗有一個隱藏的影響。

恕我直言,最好將它們用作最后​​手段,然后確保它們的使用在循環的開始或結束時緊密組合在一起,以便下一個開發人員可以在一個屏幕中看到循環的“邊界” .

continuebreakreturn (方法末尾的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM