1.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"


2.繼續聲明

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

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

continue;

continue如果我們想在某些情況下“跳過”循環體的執行,該語句在循環中非常方便。

任務:我們要編寫一個程序,打印從1到 的數字20,但跳過可被 整除的數字7。這就是這段代碼的樣子。

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

實際上,這段代碼是行不通的,因為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);
}