iT邦幫忙

0

【左京淳的JAVA學習筆記】第四章 迴圈

while及do-while迴圈

文法如下
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);
  }
}

再次提醒,邊看文章邊練習可以增進學習效率唷。

要執行範例很簡單,遵照以下步驟即可:

  1. 點選windows的開始,並輸入CMD,打開命令提示字元視窗。
  2. 使用cd指令,移動到範例檔所在資料夾。
  3. 使用javac指令,編譯範例的java檔案。
  4. 使用java指令,執行剛剛編譯好的class檔案。

※遇到中文無法編譯問題,請使用以下指令
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迴圈因為先執行了一次,後來就符合條件而繼續重複執行。

for迴圈

直接看範例吧

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->跳出迴圈

擴張for迴圈

為了方便讀取陣列而開發的語法,範例如下:

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 - 山本 道子


尚未有邦友留言

立即登入留言