Java流程控制


Java流程控制

1.用戶交互Scanner

2.順序結構

3.選擇結構

4.循環結構

5.break & continue

6.練習


1.用戶交互Scanner

  1. java.util.Scanner 是 java5 的新特性,我們可以通過 Scanner 類來獲取用戶的輸入

  2. 基本語法

    Scanner s = new Scanner(System.in);
  3. 通過 Scanner 類的 next() 和 nextLine() 方法獲取輸入的字符串,再讀取前我們一般需要使用 hasNext() 和 hasNextLine() 判斷是否含有輸入的數據

    1. next(): next() 不能得到帶有空格的字符串

      /*
      1.一定要讀取到有效字符后才可以結束輸入
      2.對輸入有效字符之前遇到的空白,next()會自動將其去掉
      3.輸入有效字符后,將后面的空白作為分隔符或結束符
      */
    2. nextLine():

      /*
      1.以enter位結束符,nextLine()方法返回的是輸入回車之前的所有字符
      2.可以獲得空白
      */

       

    3. 示例:

      package ProcessControl.ScannerUse;

      import java.util.Scanner;
      // 程序可以輸入多個數組,並計算這些數的sum和mean,每輸入一個數用回車確認,通過輸入非數字來結束輸入並執行結果
      public class ScannerTest_5 {
         public static void main(String[] args) {
             Scanner s = new Scanner(System.in);
             // 和
             double sum=0;
             // 計算輸入了多少個數字
             int n = 0;
             System.out.println("請輸入數字:");
             while (s.hasNextDouble()){   // Scanner 有很多方法,注意靈活使用
                 double a = s.nextDouble();
                 n++;
                 sum+=a;
            }
             System.out.println(n+"個數的和為:"+sum);
             System.out.println(n+"個數的平均值為:"+(sum/n));
             s.close(); //凡是屬於 IO 流的類,必須關閉節省資源
        }
      }

       

       

2.順序結構

  1. Java的基本結構就是順序結構,除非特別指出,都是從上往下一句一句執行。

  2. 順序結構是最簡單的算法結構,任何一個算法都離不開的一種基本算法結構

  3. 語句與語句之間,框與框之間都是從上往下執行。

3.選擇結構

  1. if 單選擇結構

    if(布爾表達式){
       //這是布爾表達式為true會執行的語句
    }

     

  2. if 雙選擇結構

    if(布爾表達式){
       //這是布爾表達式為true會執行的語句
    }else{
       //這是布爾表達式為false會執行的語句
    }
  3. if 多選擇結構

    if(布爾表達式 1){
       //這是布爾表達式 1 為true會執行的語句
    }else if(布爾表達式 2){
       //這是布爾表達式 2 為true會執行的語句
    }else if(布爾表達式 3){
       //這是布爾表達式 3 為true會執行的語句
    }else{
       //這是以上布爾表達式都為false會執行的語句
    }

    示例:

    package ProcessControl.OrderProcess;

    import java.util.Scanner;

    public class IfDemo_2 {
       public static void main(String[] args) {
           Scanner s = new Scanner(System.in);
           System.out.println("請輸入您本次考試的成績:");
           double score = s.nextDouble();
           if(score==100){
               System.out.println("恭喜你獲得了滿分!");
          }else if((score<100)&&(score>=80)){
               System.out.println("考的不錯哦!");

      bu     }else if((score<80)&&(score>=60)){
               System.out.println("還需要繼續加油!");
          }else if((score>=0)&&(score<60)){
               System.out.println("考成這樣你還睡得着覺!!!");
          }else{
               System.out.println("輸入內容不合法");
          }
      }
    }
  4. 嵌套的 if 結構

    if(布爾表達式 1){
    //這是布爾表達式為true會執行的語句
    if(布爾表達式 2){
    //這是布爾表達式 2為true會執行的語句
    }else{
    //這是布爾表達式 2為false會執行的語句
    }
    }else{
    //這是布爾表達式為false會執行的語句
    }
  5. switch多選擇結構

    多看看源碼學習編程思路 此處可以根據IDEA的反編譯功能多看看源碼

    1. wsitch case 語句判斷一個變量與一系列值中某個值是否相等,每個值稱為一個分支

    2. switch 語言中的變量類型可以是:

      • byte, short, int, char

      • String類型(從Java SE7開始),同時case標簽必須為字符串常量或者字面量

    格式:

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

4.循環結構

  1. while循環

    while(布爾表達式){
    // 循環內容
    }
    • 只要布爾表達式為true,就會一直循環里面的內容

    • 由於大多數情況需要程序停止的,需要一個讓 表達式失效的方法 來結束循環

    • 有點程序需要一直循環,比如服務器的請求響應監聽

    • 循環條件一直為true就會死循環,我們應該避免

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

  2. do...while循環

    do{
    // 代碼語句
    }while(布爾表達式);
    • 對應do...while循環,若條件不滿足,則不能進入循環,但有時候即使不滿足條件,也需要至少執行一次循環體的時候,會用到

    • do...while循環至少執行一次循環體

      do...while循環 與 while 循環區別

      • while先判斷后執行,do...while 先執行后判斷,因此do...while 循環至少循環一次。

  3. for循環

    • for循環時支持迭代的一種通用結構,最有效,靈活的循環結構

    • for循環的循環次數再執行之前就已經確定

      for(初始化;布爾表達式;迭代){
      // 循環體
      }
      • 練習

        1. 計算 0 - 100 之間的奇數與偶數和

        2. 用while或for循環輸出1-10000之間能被5整除的數,並且每行輸出3個

        3. 打印乘法表

  4. 主要用於數組中的增強型for循環(Java5 引入)

    1. 先了解,后面數組會重點運用

    2. 聲明語句:聲明新的局部變量,該變量的類型必須與數組元素的類型相匹配。

    3. 新的局部變量的作用域限定在循環語句這塊,作用時其值與數組元素的值相等

    4. 表達式:表達式時要訪問的數組名,或者是返回值為數組的方法

    for(聲明語句:表達式){
    //循環體
    }
    例子:
    for(int n:numbers){
    // n 的類型要與數組numbers中的元素相匹配
    // n 的作用域限定在 函數體 這塊
    }

5.break & continue

  • break 在任何循環的主體部分,均可以用 break 控制循環的流程,break 用於強行退出循環。

  • continue 在循環體語句體中,用於跳出本次循環,不會執行循環體中尚未執行的語句,進入下一次循環的判定。

  • 關於goto關鍵字

    1. goto 關鍵字很早就在程序設計語言中出現。盡管java保留了這個關鍵字,但並未得到正式使用。帶標簽的continue 和break 能看到goto的影子

    2. 標簽是指后面跟一個冒號的標識符,如 label:

    3. 在循環之前設置標簽的唯一理由:希望在該循環中嵌套另一個循環,由於break 和 continue只能中斷當前循環,若配合標簽使用,就可以中斷到存在標簽的地方。

      // 打印101-105之所有質數
      int count = 0;
      outer:for(int i=101;i<150;i++){
      for(int j = 2;j<i/2;j++){
      if(i%j==0){
      continue outer; // 從內部循環跳到外部
      }
      }
      System.out.print(i+"\t")
      }

       

6.練習

  • 需求:打印三角形

// 主要思路是將它划分為三個三角形進行打印
package ProcessControl.OrderProcess;

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

}
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM