1. 程式人生 > 其它 >Java學習筆記3--Java流程控制語句

Java學習筆記3--Java流程控制語句

Java流程控制語句

Javadoc文件的生成方式

  1. 命令列方式(cmd)

    • javadoc -encoding UTF-8 -charset UTF-8 類名.java

  2. IDEA方式

    • 參考https://www.jianshu.com/p/0ddb0864e499

    • 記得這段配置,否則會報錯

      -encoding UTF-8 -charset UTF-8 -windowtitle "文件HTML頁面標籤的標題" -link http://docs.Oracle.com/javase/7/docs/api
    • 建議下載阿里巴巴開發手冊,瞭解實際企業開發的手冊

使用者互動Scanner

  • Scanner物件

    • 工具類,java.util.Scanner是Java5的新特徵,通過Scanner類來獲取使用者的輸入。

    • 基本語法

      • Scanner s = new Scanner(System.in) ;

    • 通過Scanner類的next()與nextLine()方法獲取輸入的字串,在讀取前我們一般需要使用hasNext()與hasNextLine()判斷是否還有輸入的資料。

      • next():

        1. 一定要讀取到有效字元後才可以結束輸入

        2. 對輸入有效字元之前遇到的空白,next()方法會自動將其去掉

        3. 只有輸入有效字元後才將其後輸入的空白作為分隔符或者結束符

        4. next()不能得到帶有空格的字串

      • package com.JXinLove.scanner;

        import java.util.Scanner;

        public class Demo01 {
        public static void main(String[] args) {
        //建立一個掃描器物件,用於接收鍵盤資料
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用next方法接收:");
        //判斷使用者有沒有輸入字串
        if (scanner.hasNext()==true){
        //使用next方式接收
        String string=scanner.next();
        System.out.println("輸入的內容為:"+string);
        }
        //使用IO流的類如果不關閉會一直佔用資源,要養成良好的習慣,將用完的資源關閉
        scanner.close();
        }
        }
      • nextLine():

        1. 以Enter為結束符,也就是說nextLine()方法返回的是輸入回車之前的所有字元

        2. 可以獲得空白

      • package com.JXinLove.scanner;

        import java.util.Scanner;

        public class Demo02 {
        public static void main(String[] args) {
        //建立一個掃描器物件,用於接收鍵盤資料
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用nextLine方法接收:");
        //判斷使用者有沒有輸入字串
        if (scanner.hasNextLine()==true){
        //使用next方式接收
        String string=scanner.nextLine();
        System.out.println("輸入的內容為:"+string);
        }
        //使用IO流的類如果不關閉會一直佔用資源,要養成良好的習慣,將用完的資源關閉
        scanner.close();
        }
        }

順序結構

  • Java的基本結構就是順序結構,除非有特別指明,否則就一步一步執行下去。

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

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

選擇結構

  • if單選擇結構

    • 語法

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

    • 語法

      if(布林表示式){
      //如果布林表示式的值為true
      }else{
      //如果布林表示式的值為false
      }

  • if多選擇結構

    • 語法

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

  • 巢狀的if結構

    • 語法

      if(布林表示式1){
      //如果布林表示式1的值為true執行程式碼
      if(布林表示式2){
      //如果布林表示式2的值為true執行程式碼
      }
      }

  • switch多選擇結構

    • 語法

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

迴圈結構

  • while迴圈

    • 語法

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

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

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

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

    • 思考:計算1+2+3+...+100=?

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

  • do...while迴圈

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

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

    • 語法

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

      • while先判斷後執行。do...while是先執行後判斷

      • do...while總是保證迴圈體會被至少執行一次!這是他們的主要差別

  • for迴圈

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

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

      for(初始化;布林表示式;更新){
      //程式碼語句
      }
    • 練習

      • 計算0到100之間的奇數和偶數的和

        public class ForDemo {
        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);
        }
        }

      • 用while或for迴圈輸出1-1000之間能被5整除的數,並且每行輸出3個

        //方法一:
        for (int i=1;i<1001;i++){
        if (i%5==0){
        System.out.print(i+"\t");
        }
        if (i%(5*3)==0){
        System.out.println();
        }
        }

        //方法二:
        int count = 0;
        for (int i = 1; i <= 1000; i++) {
        if (i%5==0){
        System.out.print(i+"\t");
        count++;
        }
        if (count%3==0){
        System.out.println();
        }
        }

        //方法三:
        int i = 1;
        int count = 0;
        while (i<1001){
        if (i%5==0){
        System.out.print(i+"\t");
        count++;
        }
        i++;
        if (count%3==0){
        System.out.println();
        }
        }

      • 列印九九乘法表

        for (int j = 1; j <= 9; j++){
        for (int i = 1; i <= j; i++) {
        System.out.print(i+"*"+j+"="+i*j+"\t");
        }
        System.out.println();
        }
  • 增強for迴圈

    • 語法:

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

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

  • break和continue

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

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