Java筆記-04 控制語句

控制語句

  • 流程控制語句是用來控制程序中各語句執行順序的語句, 可以把語句組合成能完成一定功能的小邏輯模塊。
  • 其流程控制方式採用結構化程序設計中規定的三種基本流程結構, 即: 順序結構、 分支結構和循環結構

選擇語句

  • if 單選擇
  • if…else 雙選擇
  • if…else if…else多選擇
public class TestIf {
    public static void main(String[] args) {
        int a = (int)(6 * Math.random()) + 1 ; //[0,1)區間內的數
        int b = (int)(6 * Math.random()) + 1 ;
        int c = (int)(6 * Math.random()) + 1 ;
        int sum = a+b+c;
        //單選擇
        if (sum >= 15){
            System.out.println("手氣不錯");
        }
        if (sum >= 9 && sum < 15){
            System.out.println("手氣一般");
        }
        //雙選擇
        if(sum >= 15){
            System.out.println("不錯");
        }else{
            System.out.println("湊合");
        }
        //多選擇
        if(sum <= 6){
            System.out.println("小");
        }else if(sum <= 9){
            System.out.println("中");
        }else{
            System.out.println("大");
        }
    }
}

  • switch,表示多值相等的判斷,switch可以是整數,枚舉,字符串
public class TestSwitch {
    public static void main(String[] args) {
        char c = 'a';
        int rand = (int) (26 * Math.random());
        char c2 = (char) (c + rand);
        System.out.print(c2 + ": ");
        switch (c2) {
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':
                System.out.println("元音");
                break;
            case 'y':
            case 'w':
                System.out.println("半元音");
                break;
            default:
                System.out.println("輔音");
                break;
        }
    }
}

循環語句

  • 當型和直到型
  • while,for,do…while
package MyPro03;
public class TestWhile {
    public static void main(String[] args) {
        // while
        int sum = 0;
        int i = 1;
        while(i <=100){
            sum += i;
            i++;
        }
        System.out.println(sum);
        //for
        int sum2 = 0;
        for(int j = 0;j<=100;j++){
            sum2 += j;
        }
        System.out.println(sum2);
        //for多個條件,逗號分隔
        for(int i1 = 0, j1 = 0;i1<=5;i1++,j1+=i1){
            System.out.println(i1+","+j1);
        }
        //do...while
        int sum3 = 0;
        int k = 1;
        do{
            sum3 += k;
            k++;
        }while (k<=100);
        System.out.println(sum3);
    }
}
  • 嵌套循環,循環裏面有循環
package MyPro03;

public class TestMFor {
    public static void main(String[] args) {
        //打印一行重複數字
        System.out.println("數字:");
        for(int i = 1;i<=5;i++){
            for(int j = 1;j<=5;j++){
                System.out.print(i+"\t");
            }
            System.out.println();
        }
        System.out.println("\n乘法表:");
        //乘法表
        for(int k = 1;k<10;k++){
            for(int j =1;j<=k;j++){
                System.out.print(j+"*" + k +"="+k*j+"  ");
            }
            System.out.println();
        }
        //1000以內被5整除的數的
        System.out.println("\n被5整除的數:");
        int count = 0;
        for(int h = 0;h<=1000;++h){
            if(h % 5 ==0){
                System.out.print(h+"\t");
                count++;
                if(count % 10 == 0){
                    System.out.println();
                }
            }

        }
    }
}


在這裏插入圖片描述

break continue

  • break 結束整個循環
  • continue 結束本次循環,並開始下一個
public class TestBreak {
    public static void main(String[] args) {
        System.out.println("break");
        for(int i = 0;i<6;++i){
            if(i == 3){
                break;
            }
            System.out.println(i);
        }
        System.out.println("continue");
        for(int i = 0;i<6;++i){
            if(i == 3){
                continue;
            }
            System.out.println(i);
        }
    }
}
  • 帶標籤的break continue。for之前添加標籤outer冒號,後面使用break outer或continue outer
//帶標籤的for示例,兩個數相加,如果和爲11就終止本次循環
public class TestLabelFor {
    public static void main(String[] args) {
        outer:for(int i = 1 ; i < 10;i++){
        inner:for(int j = 1; j <= i;j++){
            System.out.print(i+"+"+j+"="+(i+j)+"  ");
            if(i+j == 11){
                System.out.println();
                continue outer;
            }

        }
            System.out.println();
        }
    }
}

在這裏插入圖片描述

語句塊和方法

  • 語句塊,花括號裏的內容是一個語句塊,語句塊的變量只在當前語句塊有效。語句塊(有時叫做複合語句),是用花括號擴起的任意數量的簡單Java語句。塊確定了局部變量的作用域。塊中的程序代碼,作爲一個整體,是要被一起執行的。塊可以被嵌套在另一個塊中,但是不能在兩個嵌套的塊內聲明同名的變量。語句塊可以使用外部的變量,而外部不能使用語句塊中定義的變量,因爲語句塊中定義的變量作用域只限於語句塊
  • 方法:帶名字的語句塊。方法用於定義該類或該類的實例的行爲特徵和功能實現。 方法是類和對象行爲特徵的抽象。方法很類似於面向過程中的函數。面向過程中,函數是最基本單位,整個程序由一個個函數調用組成。面向對象中,整個程序的基本單位是類,方法是從屬於類和對象的。
  • 定義:
[修飾符1  修飾符2]   返回值類型    方法名(形式參數列表){
    Java語句;… … …
 }
  • 對象名.方法名(實參列表)
  • 方法的詳細說明, 1. 形式參數:在方法聲明時用於接收外界傳入的數據。 2. 實參:調用方法時實際傳給方法的數據。 3. 返回值:方法在執行完畢後返還給調用它的環境的數據。 4. 返回值類型:事先約定的返回值的數據類型,如無返回值,必須顯示指定爲爲void。
  • return的兩個作用,結束方法,返回值;
  • Java中進行方法調用中傳遞參數時,遵循值傳遞的原則(傳遞的都是數據的副本). 基本類型傳遞的是該數據值的copy值。引用類型傳遞的是該對象引用的copy值,但指向的是同一個對象

方法的重載

  • 一個類多個同名方法
  • 重載的方法,實際是完全不同的方法,只是名稱相同而已!
    構成方法重載的條件:
    1.不同的含義:看參數類型數量和順序,形參類型、形參個數、形參順序不同
    2.只有返回值不同不構成方法的重載,參數名稱不同不重載
public class TestOverload {
    static double add(int x,double y){
        return x + y;
    }
    static double add(double x,int y){
        return x * y;
    }
    public static void main(String[] args) {
        System.out.println(add(3.0,5));
        System.out.println(add(3,4.6));
    }
}

遞歸

  • 遞歸結構包括兩個部分:
    1.定義遞歸頭。解答:什麼時候不調用自身方法。如果沒有頭,將陷入死循環,也就是遞歸的結束條件。
    2.遞歸體。解答:什麼時候需要調用自身方法
  • 簡單的程序是遞歸的優點之一。但是遞歸調用會佔用大量的系統堆棧,內存耗用多,在遞歸調用層次多時速度要比循環慢的多,所以在使用遞歸時要慎重。
package MyPro03;

public class TestRecursion {
    public static void main(String[] args) {
        long t1 = System.currentTimeMillis();
        System.out.println(factorial(40));
        long t2 = System.currentTimeMillis();
        System.out.println("Time:"+(t2 - t1));
    }
    //階乘
    static double factorial(int n){
        if(n == 1){
            return 1;
        }else{
            return n * factorial(n - 1);
        }
    }
}

發佈了75 篇原創文章 · 獲贊 83 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章