1. 生活中的循環

很多時候,我們的生活需要我們多次執行相同的操作。例如,假設我需要掃描包含許多頁面的文檔。我們一遍又一遍地重複相同的過程:

  • 將第一頁放在掃描儀上
  • 按掃描按鈕
  • 將下一頁放在掃描儀上

這很難手動完成。如果這個過程可以以某種方式自動化,那就太好了。

或者考慮另一個示例:假設我想將收件箱中的所有未讀電子郵件標記為垃圾郵件。曾幾何時,我必須一次選擇每封電子郵件並將其標記為垃圾郵件。

但是程序員很懶惰,所以他們很久以前就自動化了這個過程:現在您只需選擇任何字母列表並單擊“標記為垃圾郵件”,然後您的電子郵件客戶端就會遍歷該列表並將每封電子郵件移至垃圾郵件文件夾。

我們能在這裡說什麼?當計算機或程序可以一次單擊執行數百或數千個單調操作時,這將非常方便。現在您也將學習如何執行此操作。


2.while循環

if-else 語句極大地擴展了我們的編程能力,使得編寫在不同情況下執行不同操作的程序成為可能。但是還有一件事會讓我們的程序更強大一個數量級——循環

Java 有 4 種循環:whileforfor-eachdo-while我們現在將深入研究其中的第一個。

循環while非常簡單。它僅由兩部分組成:條件循環體。只要條件是,循環體就會一遍又一遍地執行true。一般來說,while循環看起來像這樣:

while (condition)
   statement;
while帶有單個語句的循環的表示法
while (condition)
{
   block of statements
}
while帶有語句塊的循環的表示法

這很簡單。只要循環條件等於,語句或語句塊就會一遍又一遍地執行。true

它是這樣工作的:首先,檢查條件。如果為真,則執行循環體(語句語句塊)。然後再次檢查條件並再次執行循環體。依此類推,直到條件變為假。

如果條件始終為 ,那麼程序將永遠不會停止運行。它將永久卡在循環中。

如果第一次檢查時條件為 ,則循環體不會執行一次。


3.循環的例子

這裡有一些循環的實際例子。

代碼 解釋
int n = 5;
while (n > 0)
{
   System.out.println(n);
   n--;
}
屏幕上將顯示 5 行:
5
4
3
2
1
代碼 解釋
int  n = 0;
while (n < 10)
{
   System.out.println(n);
   n++;
}
屏幕上會顯示10行:
0
1
...
8
9
代碼 解釋
Scanner console = new Scanner(System.in);
while(console.hasNextInt())
{
   int x = console.nextInt();
} 
只要輸入數字,程序就會從鍵盤讀取數字。
代碼 解釋
while (true)
   System.out.println("C");
該程序將無休止地C在屏幕上打印這封信。
代碼 解釋
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
該程序將從鍵盤讀取行

直到exit被輸入。

在前面的示例中,該equals()方法用於比較字符串。如果字符串相等,函數將返回true。如果字符串不相等,則返回false.



4.循環內循環

在學習條件語句時,您看到了可以使用它們通過組合多個條件語句來實現複雜的邏輯。換句話說,通過在語句if中使用語句if

你可以用循環做同樣的事情。要在循環中編寫循環,您需要在第一個循環的主體內編寫第二個循環。它看起來像這樣:

while (condition for outer loop)
{
   while (condition for inner loop)
   {
     block of statements
   }
}
while在另一個循環內循環(帶有語句塊while

讓我們來看看三個任務。

任務 1。假設我們要編寫一個程序,Mom在屏幕上顯示該單詞 4 次。循環正是我們所需要的。我們的代碼看起來像這樣:

代碼 解釋
int  n = 0;
while (n < 4)
{
   System.out.println("Mom");
   n++;
}
屏幕上會顯示 4 行:
Mom
Mom
Mom
Mom

任務 2。我們要編寫一個程序,A在一行中顯示 5 個字母。為此,我們需要再次循環。這就是代碼的樣子:

代碼 解釋
int n = 0;
while (n < 5)
{
   System.out.print("A");
   n++;
}
而不是println(),我們將使用print()。否則,每個字母A 將在單獨的一行結束。

屏幕輸出將是:
AAAAA

任務 3。我們要顯示一個由字母As 組成的矩形。該矩形應由 4 行 x 5 列組成。為此,我們現在需要一個嵌套循環。我們將簡單地採用我們的第一個示例(我們輸出 4 行的那個)並將用於輸出一行的代碼替換為第二個示例中的代碼。

代碼 解釋
int n = 0;

while (n < 4) { int m = 0;
while (m < 5) { System.out.print("A"); m++; }
System.out.println(); n++; }
 
外圈是紫色的它使用n變量來計算循環的迭代次數。

內環是綠色的它使用m變量來計算循環迭代次數。在內循環完成後,

我們必須明確地將光標移動到下一行。否則,程序打印的所有字母將在一行中結束。

屏幕輸出將是:
AAAAA
AAAAA
AAAAA
AAAAA

外循環和內循環必須使用不同的變量來統計循環迭代次數。我們還必須System.out.println()在內循環之後添加命令,因為該循環A在同一行顯示字母 s。一旦顯示一行上的字母,就必須將光標移動到新的一行。



5. 比較循環 Java 和 Pascal

你們中的許多人在高中時學習過 Pascal。為了讓您更容易理解此處的材料,請看一下while用 Pascal 和 Java 編寫的循環的比較。如果您不了解 Pascal,請跳過這部分。

帕斯卡 爪哇
i := 3;
While i >= 0 Do
   Begin
      WriteLn(i);
      i := i - 1;
   End;
int i = 3;
while (i >= 0)
{
   System.out.println(i);
   i--;
}
i := 0;
While i < 3 Do
   Begin
      WriteLn(i);
      i := i + 1;
   End;
int i = 0;
while (i < 3)
{
   System.out.println(i);
   i++;
}
IsExit := False;
While Not isExit Do
   Begin
      ReadLn(s);
      isExit :=  (s = 'exit');
   End;
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
While True Do
   WriteLn('C');
while (true)
   System.out.println("C");
While True Do
   Begin
     ReadLn(s);
     If s = 'exit' Then
       Break;
   End;
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}