“嗨,阿米戈!

“嗨,艾莉。”

“你已經研究過循環,這很酷。”

“我同意!現在我完全不知道沒有他們該如何生活。”

“有時候你可以不用它們……但更多時候你會需要它們。今天我們要說的是當你需要提前跳出循環時的情況。”

“你的意思是,當繼續循環的條件為真,但你還需要退出循環?”

“沒錯!有時候你聽起來好像你已經是一名程序員了。無論如何,要提前跳出一個循環,你可以使用 break 語句看看下面的例子:

代碼 解釋
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
該程序將從鍵盤讀取一行,直到您輸入"exit"

“我明白了。程序從控制台讀取行。如果輸入"exit",則isExit變量變為true,循環條件將為,循環將結束。”!isExitfalse

”沒錯。所以,Java有一個特殊的break語句,可以讓你簡化這樣的邏輯。如果一個break語句在循環內部執行,那麼循環立即結束。程序會開始執行循環後面的語句。語句非常簡短:

break;

“以下是如何使用break語句重寫我們剛剛討論的示例:

代碼 解釋
Scanner console = new Scanner(System.in);
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}
該程序將從鍵盤讀取一行,直到您輸入"exit"

“也許我會記住的,我覺得它會派上用場。”

“但這break不是唯一允許您控制循環行為的 Java 語句。Java 也有該語句continue。如果您continue在循環內執行語句,循環的當前迭代將提前結束。”

“迭代是什麼意思?”

“循環迭代是循環體的一次執行。continue語句中斷循環的當前迭代,但與break語句不同的是,它不會結束循環本身。語句也很簡短:

continue;

“那麼,continue如果我們想‘跳過’循環的某些迭代的執行,那麼可以在循環中使用該語句?”

break“沒錯,你明白和的區別嗎continue?如果你需要在20個不重複的數字中找到一個7,你會用什麼樣的循環和循環中斷語句?

“嗯……我會檢查所有的數字,如果我找到 7,那麼我會執行一個break。”

“如果您需要顯示從120除了可被 整除的數字怎麼辦7?”

“好吧,在這裡我可能需要continue,因為我不想退出循環。但我還是不太明白。”

“讓我告訴你如何解決這個問題。這就是這段代碼的樣子。”

代碼 解釋
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
     continue;
   System.out.println(i);
   i++;
}
該程序顯示從1到 的數字20。如果數字可以被整除7(餘數除以7 0 ,那麼我們將跳過顯示數字。

“你為什麼這麼懷疑地看著我,艾莉?這裡有​​什麼陷阱嗎?”

“你不會被愚弄的,阿米戈!事實上,這段代碼不會正常工作。它會顯示前 6 位數字,然後i永遠停留在數字上7。畢竟,該continue語句跳過了另外兩個語句:System.out.println(i)i++。作為結果,一旦我們達到 value 7,變量i將停止變化,我們將陷入無限循環。我這樣寫代碼是為了說明一個非常常見的錯誤。”

“我們如何解決它?”

“這裡有兩個選擇:”

選項 1:i在執行之前更改continue,但之後i % 7

選項 2:i始終在循環開始時遞增。但那時i的起始值必須是0.

選項1 選項 2
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
   {
     i++;
     continue;
   }
   
   System.out.println(i);
   i++;
}
int i = 0;
while (i < 20)
{
   i++;
   if ( (i % 7) == 0)
     continue;
   System.out.println(i);
}

“太好了!我會盡量不犯這個錯誤的。”

“我會記住你的承諾的!”