1. 程式人生 > 其它 >java基礎學習Day06-流程控制

java基礎學習Day06-流程控制

一.順序結構

  • java基本結構就是順序結構,除非特別指明,否則就按照順序一句一句執行

  • 順序結構是最簡單的演算法結構

  • 語句和語句之間,框和框之間按從上到下的順序進行的,他由若干個依次執行的處理步驟組成的,是任何一個演算法都離不開的一種基本演算法結構。

    public static void main(String[] args) {
        System.out.println("1d");
        System.out.println("2d");
        System.out.println("3d");
        System.out.println("4d");
    }
    

二.選擇結構

  • if單選澤結構:

    • 判斷一個東西是否可行,可行則執行,不可行則跳過,我們使用if語句來實現

    • 語法:

      if (布林表示式){
          //布林表示式為true則執行的語句
      }
      
      public static void main(String[] args) {
          Scanner scanner = new Scanner(System.in);
          System.out.println("please enter words:");
          String i = scanner.nextLine();
          if (i.equals("hello")){
              System.out.println(i);
          }
          System.out.println("end");//不論是否都會執行
      }
      
  • if雙選擇結構

    • 需要兩個判斷,可行一種做法,不可行另一種做法

    • 語法

      if (布林表示式1){
          //若布林表示式的值為true則執行該語句
      }else{
          //若布林表示式的值為false則執行該語句
      }
      
      public static void main(String[] args) {
          Scanner scanner =new Scanner(System.in);
          System.out.println("請輸入分數為:");
          //分數是否及格,大於等於60為及格,小於60不及格
          int i =scanner.nextInt();
          if (i>=60){
              System.out.println("及格");
          }else{
              System.out.println("不及格");
          }
      
          scanner.close();
      }
      
  • if多選擇結構

    • 通常真實情況下,我們需要多種情況需要判斷,例如成績的a,b,c,d,等級,我們就需要使用多選擇結構

    • 語法

      if (布林表示式1){
          //若布林表示式1的值為true則執行該語句
      }else if(布林表示式2){
          //若布林表示式2的值為true則執行該語句
      }else if(布林表示式3){
          //若布林表示式3的值為true則執行該語句
      }else{
          //如果以上布林表示式都不為true則執行該語句
      }
      
      public static void main(String[] args) {
          Scanner scanner = new Scanner(System.in);
          System.out.println("please enter score:");
          int score = scanner.nextInt();
          if (score==100){
              System.out.println("awsome!");
          }else if(score>=80 && score<100){
              System.out.println("great!");
          }else if(score>=60 && score<80){
              System.out.println("not bad!");
          }else if(score<60){
              System.out.println("pity!");
          }else{
              System.out.println("error");
          }
      }
      
  • switch多選擇結構(switch,case,)

    • switch,case語句判斷一個變數與一系列值中的某個值是否相等,每個值稱為一個分支。

    • switch語句中的變數型別可以是

      • byte,short,int,或者char
      • 從javaSE7開始
      • switch支援字串和String型別了
      • 同是case標籤必須為字串常量或者字面量。
    • 語法

      switch(expression){
          case value:
              //語句
              break;//可選
          case value:
              //語句
              break;//可選
              .....
              default://可選
              //語句
      }
      
      public static void main(String[] args) {
          char grade = 'C';
          //case穿透:使用break終止case匹配,若不使用break,下面的語句也會被執行
      
          switch (grade){
              case 'A':
                  System.out.println("wonderful");
                  break;
              case 'B':
                  System.out.println("great");
                  break;
              case 'C':
                  System.out.println("nice");
                  break;
              case 'D':
                  System.out.println("not bad");
                  break;
              default:
                  System.out.println("unknow");
          }
      }
      

      java檔案

      IDEA反編譯檔案,使用hashcode儲存鍵值

三.迴圈結構

  • while迴圈
  • do...while迴圈
  • for迴圈
  • 在java5中引入了一種主要用於陣列的增強型for迴圈
  1. while迴圈:

    • while是最基本的迴圈,它的結構為

      while (布林表示式){
          //迴圈內容
      }
      
    • 只要布林表示式為true,他就會一直迴圈下去

    • 我們大部分情況是會讓迴圈停止的,我們需要一個讓表示式失效的方式來結束迴圈

    • 少部分情況需要迴圈一直執行,比如伺服器的請求響應監聽

    • 迴圈條件一直為true,就會形成死迴圈,正常業務中應當避免這種情況

    • Q:累加計算

      public class whileDemo03 {
          public static void main(String[] args) {
              int i = 0;
              int sum = 0;
              while (i<=100){
                  sum = sum + i;
                  i++;
              }
              System.out.println(sum);
          }
      }
      
  2. do...while迴圈

    • 對於while迴圈來說,如果不滿足條件,則不能進入迴圈。但是有時候我們需要即使不滿足條件,也至少執行一次

    • do...while和while相似,不同的是do...while至少會執行一次

      do {
          //code
      }while (布林表示式);
      
    • while和do...while區別:

      • while是先判斷後執行,do...while是先執行後判斷
      • do...while保證迴圈體至少會執行一次
      public static void main(String[] args) {
          int a = 0;
          while(a<0){
              System.out.println(a);
              a++;
          }
          System.out.println("===========================");
          do{
              System.out.println(a);
              a++;
          }while(a<0);
      }//分割線下方輸出a=0;,dowhile語句執行了一次
      
  3. for語句

    • for迴圈提供了一種更簡單的迴圈結構

    • for迴圈是一種支援迭代的通用結構,是最有效,最靈活的迴圈結構

    • for迴圈的執行次數是在迴圈開始之前就決定好的,語法如下

      for (初始化;布林表示式;更新){
          //程式碼語句
      }
      
      public static void main(String[] args) {
          int i = 0;//初始化條件
          while (i<=10){//條件判斷
              System.out.println(i);//迴圈體
              i+=2;//迭代
          }
          System.out.println("================分割線=================");
      
          //初始化;條件判斷;迭代
          for (int a=0;a<10;a+=2){
              System.out.println(a);
          }
      }
       //死迴圈
              for (; ; ) {
      
              }
      
    • 列印99乘法表

      public static void main(String[] args) {
          for (int i = 1; i < 10; i++) {
              for (int j = 1; j <=i; j++) {
                  System.out.print(i + "*" + "j" + "=" + i*j +" ");
                  if (i == j){
                      System.out.println();
                  }
              }
          }
      }
      

四.增強for迴圈

  • java5引入了一種主要用於陣列或集合的增強型for迴圈

  • java增強for迴圈格式如下:

    for (宣告語句 : 表示式)
    {
        //程式碼句子
    }
    
  • 宣告語句:宣告新的區域性變數,該變數的型別必須與陣列元素的型別匹配。其作用域限定在迴圈語句塊,其值與此時陣列元素值相等。

  • 表示式:表示式是要訪問的陣列名,或者返回值為陣列的方法。

    public class ForDemo05 {
        public static void main(String[] args) {
            int[] numbers = {10,20,30,40,50};//定義一個數組
            //for迴圈遍歷陣列,把numbers的值賦值給x輸出
            for (int x:numbers){
                System.out.println(x);
            }
        }
    }
    

五.break和continue

  • break在任何迴圈的主體部分,均可使用break來控制迴圈的流程。break用於強行退出迴圈,不執行迴圈中的剩餘的語句。

  • continue語句用於再迴圈語句體中,用於終止某次迴圈過程,即跳過迴圈體中尚未執行的語句,接著進行下一次是否執行迴圈的判定。

    public class ContinueDemo {
        public static void main(String[] args) {
            int i = 0;
            while (i<20){
                System.out.print(i + " ");
                i++;
                if (i%3==0){
                    System.out.println(" ");
                    continue;//跳出當前迴圈,回到上層迴圈
                }
            }
        }
    }
    
    public class BreakDemo {
        public static void main(String[] args) {
            int i = 0;
            while (i<10){
                System.out.println(i);
                i++;
                if (i==5){
                    break;//跳出全部迴圈
                }
            }
        }
    }
    
  • goto關鍵字

    • goto是java的一個保留字,但並未正式使用,java沒有goto,
    • 標籤:指後面跟一個冒號的識別符號,例如:label:
    • 對於java唯一用到標籤的地方是在迴圈語句之前,而在迴圈之前設定標籤的唯一理由是:我們希望在其中巢狀另一層迴圈,與break,continue一起使用可以中斷到標籤的位置。
  • 列印一個三角形

    public static void main(String[] args) {
        for (int i = 1; i <= 5; i++) {
            for (int j = 5; j >= i; j--) {
                System.out.print(" ");
            }
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            for (int j = 1; j < i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}