文法如下
while (條件式){
執行內容
}
當條件式為true時,會進入迴圈執行內容。
另外一種do-while文法如下
do{
執行內容
}while (條件式)
不管條件如何,總之先執行一次,之後再看條件決定要不要跑迴圈。
來看看範例
class Sample4_1 {
public static void main(String[] args) {
//while文
int count = 5;
while (count != 5 && count > 0){
System.out.println("while : count = " + count);
count--;
}
//do-while文
count = 5;
do {
System.out.println("do-while : count = " + count);
count--;
}while (count != 5 && count > 0);
}
}
要執行範例很簡單,遵照以下步驟即可:
※遇到中文無法編譯問題,請使用以下指令
javac -encoding utf-8 Sample4_1.java
※遇到中文顯示亂碼問題,請使用以下指令
chcp 950
把常用指令存在文字檔裡面,可以更方便操作。
上述範例的執行結果如下
do-while : count = 5
do-while : count = 4
do-while : count = 3
do-while : count = 2
do-while : count = 1
可以發現while迴圈因為條件不符沒被執行,然而do-while迴圈因為先執行了一次,後來就符合條件而繼續重複執行。
直接看範例吧
class Sample4_2 {
public static void main(String[] args) {
for (int count = 0; count < 5; count++){
System.out.println("count = " + count);
}
}
}
執行結果
count = 0
count = 1
count = 2
count = 3
count = 4
for迴圈的條件式結構如下:
for(變數賦值;判斷式;後處理){
處理內容
}
迴圈執行流程如下:
判斷式->true->處理內容->後處理->判斷式
判斷式->false->跳出迴圈
為了方便讀取陣列而開發的語法,範例如下:
class Sample4_3 {
public static void main(String[] args) {
//陣列宣言
char[] array = {'a','b','c','d','e'};
//利用擴張for文逐一讀取陣列內容
for (char c : array){
System.out.print(c + " ");
}
System.out.println(); //改行
//使用一般for文的寫法
for (int count = 0 ; count < array.length ; count++){
System.out.print(array[count] + " ");
}
}
}
宣告一個變數(c),用來承接陣列取出來的值,寫起來乾淨多了。
執行結果
a b c d e
a b c d e
擴張for迴圈除了陣列之外,也可以取用ArrayList類的列表。
以下幾種指令可以用來操縱迴圈。
break; //跳出迴圈 or 跳出指定的迴圈。
continue; //略過剩下的處理,由所在迴圈or指定迴圈的開頭繼續執行。
替迴圈命名並搭配break或continue使用,即可跳出/移動到指定的迴圈。
來看看範例:
class Sample4_4 {
public static void main(String[] args) {
loop1: //在迴圈前面指定其暱稱為loop1
for (int a = 0 ; a < 3 ; a++){
for (int b = 0 ; b < 3 ; b++){
System.out.println("a = " + a + " b = " + b);
if(a == 1 && b == 1){
System.out.println("break被執行了。");
break loop1;
}
}
System.out.println("loop1的後段處理。");
}
loop2:
for (int a = 0 ; a < 3 ; a++){
for (int b = 0 ; b < 3 ; b++){
System.out.println("a = " + a + " b = " + b);
if(a == 1 && b == 1){
System.out.println("continue被執行了。");
continue loop2;
}
}
}
}
}
執行結果
a = 0 b = 0
a = 0 b = 1
a = 0 b = 2
loop1的後段處理。
a = 1 b = 0
a = 1 b = 1
break被執行了。
a = 0 b = 0
a = 0 b = 1
a = 0 b = 2
a = 1 b = 0
a = 1 b = 1
continue被執行了。
a = 2 b = 0
a = 2 b = 1
a = 2 b = 2
可以觀察看看break和continue的差異
在break後面指定loop1的話,程序就會直接跳出loop1迴圈。
但如果把break後面的loop1拿掉,只會跳出所在(第二層)迴圈,程式會繼續進行loop1的後段處理。
以上是第四章 迴圈的學習心得,接下來第五章會介紹class定義及物件的生成、使用。
參考教材: JAVAプログラマSilver SE8 - 山本 道子