1. 程式人生 > 其它 >Java的幾種結構

Java的幾種結構

順序結構

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

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

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

選擇結構

  1. if單選擇結構

    • 我們很多時候需要去判斷一個東西是否可行,然後我們才去執行,這樣一個過程在程式中用if語句來表示

    • 語法:

      if(布林表示式){
          //如果布林表示式為true將執行的語句
      }
      
  2. if雙選擇結構

    • 假定要根據成績判斷是否及格,滿60分及格,否則不及格,則此時則需要用到雙選擇結構:if-else結構

    • 語法:

      if(布林表示式){
          //如果布林表示式為true
      }else{
          //如果布林表示式為false
      }
      
    • 例:

      package struct;
      
      import java.util.Scanner;
      
      public class IfDemo02 {
          public static void main(String[] args) {
              Scanner scanner = new Scanner(System.in);
      
              System.out.println("請輸入成績:");
              int score = scanner.nextInt();
      
              if (score >= 60){
                  System.out.println("及格");
              }else{
                  System.out.println("不及格");
              }
      
              scanner.close();
          }
      }
      
      
  3. if多選擇結構

    • 真實情況可能存在區間多級判斷,以2中判斷成績的程式碼為例,比如90-100是A,80-90是B。。。等等,所以需要一個多選擇結構來處理這類問題

    • 語法:

      if(布林表示式1){
          //如果布林表示式1的值為true執行程式碼
      }else if(布林表示式2){
          //如果布林表示式2的值為true執行程式碼
              。
              。
              。
      }else{
          //如果以上表達式都不為true執行程式碼
      }
      
    • 例:

      package struct;
      
      import java.util.Scanner;
      
      public class IfDemo03 {
          public static void main(String[] args) {
              Scanner scanner = new Scanner(System.in);
              int score = scanner.nextInt();
      
              if (score >=90 && score <= 100){
                  System.out.println("A");
              } else if (score <90 && score >=80) {
                  System.out.println("B");
              } else if (score < 80 && score >= 70) {
                  System.out.println("C");
              } else if (score <70 && score >= 60) {
                  System.out.println("D");
              } else if (score <60 && score >= 0){
                  System.out.println("E");
              } else {
                  System.out.println("成績不合法");
              }
              scanner.close();
          }
      }
      
      
  4. 巢狀的if結構

    • 使用巢狀的if-else語句是合法的,也就是說你可以在另一個if 或者else if語句中使用if或都else if 語句,你可以像if語句一樣巢狀else if...else

    • 語法:

      if(布林表示式1){
          //如果布林表示式1的值為true執行程式碼
          
          if(布林表示式2){
              //如果布林表示式2的值為true執行程式碼
          }
      }
      
  5. switch多選擇結構

    • 多選擇結構還有一個實現方式就是switch case語句

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

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

      • byte,short,int 或者 char
      • 從Java SE 7開始
      • switch支援字串String型別了
      • 同時case標籤必須為字串常量或字面量
    • 語法:

      switch(expression){
          case value:
              //語句
              break;//可選
          case value:
              break;
              .
              .
              .
          //可以有任意數量的case語句
                  
          default: //可選
              //語句
      }
      
    • 例:

      package struct;
      
      import java.util.Scanner;
      
      public class SwitchDemo01 {
          public static void main(String[] args) {
              Scanner scanner = new Scanner(System.in);
              String grade = scanner.nextLine();
      
              switch (grade){
                  case"A":
                      System.out.println("優秀");
                      break;
                  case"B":
                      System.out.println("良好");
                      break;
                  case"C":
                      System.out.println("普通");
                      break;
                  case"D":
                      System.out.println("及格");
                      break;
                  case"E":
                      System.out.println("再接再厲");
                      break;
                  default:
                      System.out.println("未知等級");
              }
          }
      }
      
      

迴圈結構

  1. while迴圈

    • while迴圈結構,它的結構為:

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

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

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

    • 迴圈條件一直為true就會造成無限迴圈(死迴圈),我們正常的業務程式設計中應該儘量避免死迴圈。會影響程式效能或者造成程式卡死崩潰

    • 例:計算1加到100

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

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

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

    • 程式碼:

      do{
          //程式碼語句
      }while(布林表示式);
      
    • while和do-while的區別:

      • while先判斷後執行,do-while是先執行後判斷
      • do-while總是保證迴圈體會被至少執行一次,這是他們的主要差別
    • 例:

      package struct;
      
      public class DoWhileDemo01 {
          public static void main(String[] args) {
              int i = 0;
              int sum = 0;
              do {
                  sum += ++i;
              } while (i < 100);
              System.out.println(sum);
          }
      }
      
      
  3. for迴圈、

    • 雖然所有迴圈結構都可以用while或者do...while表示,但java提供了另一種語句——for迴圈,使一些迴圈結構變得更加簡單

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

    • for迴圈執行的次數是在執行前就確定的,語法格式如下:

      for(初始化;布林表示式;更新;){
          //程式碼語句
      }
      
    • 練習1:計算0到100間奇數和偶數的和

      package struct;
      
      public class ForDemo01 {
      
          public static void main(String[] args){
      
      
              int oddSum = 0;
              int evenSum = 0;
      
              for (int i=0;i<=100; i++){
                  if (i % 2 != 0){
                      oddSum += i;
                  }else{
                      evenSum += i;
                  }
              }
              System.out.println("奇數的和為:"+oddSum);
              System.out.println("偶數的和為:"+evenSum);
          }
      }
      
      
    • 練習2:用while或for迴圈輸出1-1000之間能被5整除的數,並且每行輸出3個

      package struct;
      
      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("\n");
                  }
              }
          }
      }
      
      
    • 練習3:列印九九乘法表

      package struct;
      
      public class ForDome03 {
          public static void main(String[] args) {
      
              for (int i=1; i<=9; i++){
                  for (int m=1; m<=i; m++){
                      System.out.print(m+"x"+i+"="+i*m+"\t");
                  }
                  System.out.println();
              }
          }
      }
      
      
  4. 在Java5中引入了一種主要用於陣列的增強型for迴圈

    • 當時只需初步瞭解

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

    • Java增強for迴圈語法格式如下:

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

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

    • 例:

      package struct;
      
      public class ForDemo04 {
          public static void main(String[] args) {
              int[] numbers = {10,20,30,40,50}; //定義了一個數組
      
              //遍歷陣列的元素
              for (int x:numbers){
                  System.out.println(x);
              }
          }
      }
      
  5. break continue

    • break在任何迴圈語句的主體部分,均可用break控制迴圈的流程。break用於強行退出迴圈,不執行迴圈中剩餘的語句。(break語句也在switch語句中使用)
    • continue語句用在迴圈語句體中,用於終止某次迴圈過程,即跳過迴圈體中尚未執行的語句,接著進行下一次是否執行迴圈的判 定
    • 關於goto關鍵字
      • goto關鍵字很早就在程式設計語言中出現,儘管goto仍是java的一個保留字,但並未在語言中得要下式使用;java沒有goto,然而,在break和continue這兩個關鍵字的身上,我們仍能看出一些goto的影子——帶標籤的break和continue
      • “標籤”是指後面跟一個冒號的識別符號,例如:label:
      • 對java來說唯一用到標籤的地方是在迴圈語句之前,而在迴圈之前設定標籤的唯一理由是:我們希望在其中巢狀另一個迴圈,由於break和continue關鍵字通常只中斷當前迴圈,但若隨同標籤使用,它們就會中斷到存在標籤的地方。