1. 程式人生 > 實用技巧 >Java流程控制03:迴圈結構

Java流程控制03:迴圈結構

一、while迴圈

  • while是最基本的迴圈,它的結構為:
while(布林表示式){
   //迴圈內容
}
  • 只要布林表示式為true,迴圈就會一直執行下去。
  • 我們大多數情況實惠讓迴圈停止下來的,我們需要一個讓表示式失效的方式來結束迴圈。
  • 少部分情況需要迴圈一直執行,比如伺服器的請求響應監聽等。
  • 迴圈條件一直為true就會造成無限迴圈【死迴圈】,我們正常的業務程式設計中應該儘量避免死迴圈。會影響程式的效能或者造成程式卡死崩潰!
    //死迴圈
    while(true){
        //等待客戶端連線
        //定時檢查
        //......
    }
  • 思考:計算1+2+3+...+100=?
public class WhileDemo01 {
    public static void main(String[] args) {
        int i = 1;
        int sum=0;
        while(i<=100){
            sum+=i;
            i++;
        }
        System.out.println("sum="+sum);
    }

二、do...while迴圈

  • 對於while語句而言,如果不滿足條件,則不能進入迴圈。但有時候我們需要即使不滿足條件,也至少執行一次。
  • do...while迴圈和while迴圈相似,不同的是,do...while迴圈至少會執行一次。
do{
   //迴圈內容
}while(布林表示式);
  • while和do...while的區別:
    • while先判斷後執行。doWhile是先執行後判斷!
    • doWhile總是保證迴圈體會被至少執行一次!這是他們的主要差別。
public class DoWhileDemo02 {
    public static void main(String[] args) {
        int a=0;
        while(a<0){//迴圈體不會被執行
            System.out.println("a="+a);
            a++;
        }
        System.out.println("==================");
        do{//迴圈體會執行一次
            System.out.println("a="+a);
            a++;
        }while(a<0);
    }
}

三、for迴圈

  • 雖然所有迴圈結構都可以用while或者do...while表示,但Java提供了另一種語句——for迴圈,使一些迴圈結構變得更加簡單。
  • for迴圈語句是支援迭代的一種通用結構,是最有效,最靈活的迴圈結構。
  • for迴圈執行的次數是在執行前就確定的。語法格式如下:
for(初始化; 布林表示式; 更新){
   //程式碼語句
}
//死迴圈
for(;;){}
  • 練習01:輸出0~100的奇數和偶數的和
public class ForDemo01 {
    public static void main(String[] args) {
        int odd=0;
        int even=0;
        for (int i = 1; i <=100; i++) {
            if (i%2==0){
                even+=i;
            }else{
                odd+=i;
            }
        }
        System.out.println("odd="+odd);
        System.out.println("even="+even);
    }
}
  • 練習02:用while或者for迴圈輸出1-1000之間能被5整數的數,並且每行輸出3個
public class ForDemo02 {
    public static void main(String[] args) {
        for (int i = 1; i <=1000; i++) {
            if(i%5==0){
                System.out.print(i+"\t");
            }

            if (i%(5*3)==0){
                System.out.println(); //輸出換行
                //System.out.print("\n"); //輸出換行
            }
        }
    }
}
  • 練習03:列印九九乘法表
public class ForDemo03 {
    public static void main(String[] args) {
        int i=0;
        int j=0;
        //列印九九乘法表
        for (i = 1; i <= 9; i++) {
            for(j=1; j<=i; j++){
                System.out.print(j+"*"+i+"="+(i*j)+"\t");
            }
            System.out.println();//列印換行
        }
    }
}

四、在java5中引入了一種主要用於陣列的增強型for迴圈

  • 這是我們先只是見一面,做個瞭解,之後陣列我們重點使用
  • Java5 引入了一種主要用於陣列或集合的的增強for迴圈。
  • Java增強for迴圈語法格式如下:
for(宣告語句; 表示式){
   //程式碼語句
}
  • 宣告語句:宣告新的區域性變數,該變數的型別必須和陣列元素的型別匹配。其作用限定在迴圈語句塊,其值與此時陣列元素值相等。
  • 表示式:表示式是要訪問的陣列名,或者是返回值為陣列的方法。
public class ForDemo03 {
    public static void main(String[] args) {
        int[] numbers=[10,20,30,40,50];
        for (int i = 1; i <=5; i++) {
           System.out.println(numbers[i]);
        }
        //遍歷陣列的元素
        for (int x:numbers) {
           System.out.println(x);
        }       
    }
}