Java 循環語句的簡要指南
只要某些預定的條件為真,一個 while
循環就會執行一組任務。這被認為是一個控制結構,可以指導程序的流程。它是一種你可以通過定義一個條件來告訴你的代碼要做什麼的方法,它可以測試它,並根據它發現的情況採取行動。Java 中的兩種 while
循環是 while
和 do
/while
。
Java while 循環
while
循環的目的是對數據進行迭代,直到某個條件得到滿足。要創建一個 while
循環,你需要提供一個可以測試的條件,然後是你想要運行的代碼。Java 有幾個內置的測試函數,其中最簡單的是數學運算符(<
, >
, ==
, 等等):
package com.opensource.example;
public class Example {
public static void main(String[] args) {
int count = 0;
while (count < 5) {
System.out.printf("%d ", count);
count++;
}
}
}
在這個簡單的例子中,條件是變數 count
小於 5。因為 count
被實例化為 0,然後在 while
循環的代碼中增加 1,所以程序總共迭代了 5 次:
$ java ./while.java
0 1 2 3 4
在它進行第六次迭代之前,條件不再是真的,所以循環結束。
while
循環的條件語句是至關重要的。弄錯了可能意味著你的循環永遠不會執行。例如,假設你把 count == 5
作為條件:
while (count == 5) {
System.out.printf("%d ", count);
count++;
當你運行這段代碼時,它的構建和運行都很成功,但什麼也沒有發生:
$ java ./while.java
$
循環被跳過了,因為 count
被設置為 0,而且在第一次遇到 while 循環的時候,它還是 0。循環從未開始,count
也從未被遞增。
與此相反的是,當一個條件開始為真,並且永遠不會為假時,這將導致一個無限循環。
Java do while 循環
與 while
循環相似,do
/while
循環在每次迭代結束時測試條件,而不是在開始時測試條件。有了這個循環,循環中的代碼至少運行一次,因為沒有進入的入口,只有退出的出口:
package com.opensource.example;
public class Example {
public static void main(String[] args) {
int count = 9;
do {
System.out.printf("%d ", count);
count++;
} while(count == 5);
}
}
在這個示例代碼中,count
被設置為 9。循環重複的條件是 count
等於 5,但是 9 不等於 5。不過,這個檢查要到第一次迭代結束時才進行:
$ java ./do.java
9
Java 無限循環
無限循環,正如它的名字所示,永遠不會結束。有時它們是被錯誤地創建的,但無限循環確實有一個有效的場景。有時你想讓一個進程無限地繼續下去(在功能上是無限的,因為你不能保證你需要它什麼時候停止),因此你可能會把你的條件設置為不可能滿足的東西。
假設你寫了一個應用程序,在殭屍天啟期間計算留在你附近的殭屍的數量。為了模擬需要多少個循環才能達到 0 個殭屍的不確定性,我的演示代碼從操作系統中檢索了一個時間戳,並將計數器(c
)的值設置為從該時間戳得出的某個數字。因為這是一個簡單的例子,你不會真的想陷入一個無限循環,這段代碼倒數到 0,並使用 break
函數來強制結束循環:
package com.opensource.example;
public class Example {
public static void main(String[] args) {
long myTime = System.currentTimeMillis();
int c;
if ( myTime%2 == 0 ) {
c = 128;
} else {
c = 1024;
}
while(true) {
System.out.printf("%d Zombiesn", c);
// break for convenience
if ( c <= 0 ) { break; }
c--;
}
}
}
你可能要運行幾次才能觸發不同的殭屍總數,但有時你的程序會迭代 128 次,有時會迭代 1024 次:
$ java ./zcount.java
1024 Zombies
1023 Zombies
[...]
0 Zombies
你能說出為什麼循環的終點是 0 而不是 -1 嗎?
Java 循環
循環使你能夠控制程序的執行流程。迭代在編程中很常見,無論你使用 while
循環、do
/while
循環還是無限循環,了解循環的工作原理都是至關重要的。
via: https://opensource.com/article/23/1/java-loops
作者:Seth Kenlon 選題:lkxed 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive