在本教程中,我們將借助示例來學(xué)習(xí)如何在Java中使用while和do...while循環(huán),并且還將學(xué)習(xí)while循環(huán)在計算機編程中的工作方式
在計算機編程中,循環(huán)用于重復(fù)特定的代碼塊,直到滿足特定條件(測試表達式為false)為止。例如,
想象一下,我們需要在屏幕上打印一個句子50次。好吧,我們可以通過使用print語句50次(不使用循環(huán))來做到這一點。您需要打印一百萬次句子怎么樣?您需要使用循環(huán)。使用循環(huán),我們可以只編寫一次print語句,然后運行任意次數(shù)。
這只是一個簡單的示例,顯示了循環(huán)在計算機編程中的重要性。Java中有3種循環(huán)類型:for 循環(huán),while循環(huán)和do-while循環(huán)。
Java 中 while循環(huán)的語法為:
while (testExpression) { // while循環(huán)體中的代碼 }
在以上語法中,括號內(nèi)的測試表達式(testExpression)為布爾表達式。如果測試表達式(testExpression)的計算結(jié)果為true,
while循環(huán)內(nèi)的語句將被執(zhí)行。
然后,再次評估測試表達式(testExpression)。
這個過程一直進行到測試表達式被評估為false為止。如果測試表達式的計算結(jié)果為false,
則while循環(huán)被終止。
//程序打印行10次 class Loop { public static void main(String[] args) { int i = 1; while (i <= 10) { System.out.println("Line " + i); ++i; } } }
輸出:
Line 1 Line 2 Line 3 Line 4 Line 5 Line 6 Line 7 Line 8 Line 9 Line 10
在上面的示例中,我們有一個測試表達式(i <= 10)。它檢查i的值是否小于或等于10。
最初,此處i的值為1。因此,測試表達式(testExpression)的計算結(jié)果為true。因此,將執(zhí)行while循環(huán)內(nèi)的print語句。
請注意while循環(huán)內(nèi)的語句
++i;
該語句在每次迭代中將i值增加1。經(jīng)過10次迭代后,i的值為11。然后測試表達式(i <= 10)為false,求和while循環(huán)終止。
要了解有關(guān)測試表達式及其評估方式的更多信息,請訪問Java 關(guān)系運算符和Java 邏輯運算符。
//編程以查找1到100之間的自然數(shù)之和。 class AssignmentOperator { public static void main(String[] args) { int sum = 0, i = 100; while (i != 0) { sum += i; // 等同于 sum = sum + i; --i; } System.out.println("Sum = " + sum); } }
輸出:
Sum = 5050
在這里,我們有兩個名為sum,i的變量,其初始值分別為0和100。
在while循環(huán)的每次迭代中,
為sum變量分配值:sum + i
i的值減少1
循環(huán)一直進行到的值i等于0 為止。
1st 重復(fù): i = 100, sum = 0+100 = 100, 同時 --i = 99 2nd 重復(fù): i = 99, sum = 100+99 = 199, 同時 --i = 98 3rd 重復(fù): i = 98, sum = 199+98 = 297, 同時 --i = 97 ... .. ... ... .. ... 99th 重復(fù): i = 2, sum = 5047+2 = 5049, 同時 --i = 1 100th 重復(fù): i = 1, sum = 5049+1 = 5050, 同時 --i = 0
do...while循環(huán)類似于while循環(huán),但是有個關(guān)鍵區(qū)別,在于在檢查測試表達式之前,會執(zhí)行循環(huán)主體一次。
這是do...while循環(huán)的語法。
do { // do...while循環(huán)體內(nèi)的代碼 } while (testExpression);
do...while循環(huán)主體執(zhí)行一次(在檢查測試表達式之前)。只有這樣,測試表達式才會被檢查。
如果測試表達式被計算為true,則執(zhí)行循環(huán)體中的代碼,并再次計算測試表達式。這個過程一直進行下去,直到測試表達式被計算為false為止。
當測試表達式為時false,do..while循環(huán)終止。
下面的程序計算用戶輸入的數(shù)字總和,直到用戶輸入0。
為了接受用戶的輸入,我們使用了Scanner對象。要了解更多信息Scanner,請訪問Java Scanner。
import java.util.Scanner; class Sum { public static void main(String[] args) { Double number, sum = 0.0; //創(chuàng)建一個Scanner類的對象 Scanner input = new Scanner(System.in); do { //接受用戶的輸入 System.out.print("輸入一個數(shù)字: "); number = input.nextDouble(); sum += number; } while (number != 0.0); //測試表達 System.out.println("Sum = " + sum); } }
輸出:
輸入一個數(shù)字: 2.5 輸入一個數(shù)字: 23.3 輸入一個數(shù)字: -4.2 輸入一個數(shù)字: 3.4 輸入一個數(shù)字: 0 Sum = 25.0
在使用循環(huán)時,我們應(yīng)始終小心。 這是因為如果我們錯誤地設(shè)置了測試表達式,使其永遠不會為false,則while和do ... while循環(huán)將永遠運行。
這就是所謂的無限while和do...while循環(huán)。例如,
//無限while循環(huán) while (true) { //while循環(huán)主體 }
再舉一個實例
//無限while循環(huán) int i = 100; while (i == 100) { System.out.print("Hey!"); }
無限do...while循環(huán)的工作方式與while循環(huán)類似。