1. 程式人生 > 遊戲 >《艾爾登法環》封測桌布分享 PC、手機版均有

《艾爾登法環》封測桌布分享 PC、手機版均有

Java流程控制

使用者互動Scanner

Scanner類

java.util.Scanner 是 Java5 的新特徵,我們可以通過 Scanner 類來獲取使用者的輸入。

下面是建立 Scanner 物件的基本語法:

Scanner s = new Scanner(System.in);

接下來我們演示一個最簡單的資料輸入,並通過 Scanner 類的 next() 與 nextLine() 方法獲取輸入的字串,在讀取前我們一般需要 使用 hasNext 與 hasNextLine 判斷是否還有輸入的資料。

  • 使用next方式進行接收

    Scanner scan = new Scanner(System.in);//輸入Hello World!
    // 從鍵盤接收資料

    // next方式接收字串
    System.out.println("next方式接收:");
    // 判斷是否還有輸入
    if (scan.hasNext()) {
    //使用next方式接收
    String str1 = scan.next();
    System.out.println("輸入的資料為:" + str1);//輸出Hello
    }
    scan.close();
  • 使用nextLine方式進行接收

    Scanner scan = new Scanner(System.in);//輸入Hello World!
    // 從鍵盤接收資料

    // nextLine方式接收字串
    System.out.println("nextLine方式接收:");
    // 判斷是否還有輸入
    if (scan.hasNextLine()) {
    //使用nextLine方式接收
    String str2 = scan.nextLine();
    System.out.println("輸入的資料為:" + str2);//輸出Hello World!
    }
    scan.close();
  • 使用nextInt方式接受整數資料

    // 判斷輸入是否整數
    if (scan.hasNextInt()) {
    i = scan.nextInt();
    System.out.println("輸入整數的資料為:" + i);
    }else{
    System.out.println("輸入的不是整數");
    }
  • 使用nextDoubble方式接受小數資料

    // 判斷輸入是否小數
    if (scan.hasNextFloat()) {
    f = scan.nextFloat();
    System.out.println("輸入小數的資料為:" + i);
    }else{
    System.out.println("輸入的不是小數");
    }

next() 與 nextLine() 區別

next():

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

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

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

  • next() 不能得到帶有空格的字串。

nextLine():

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

  • 2、可以獲得空白。

if選擇結構

if單選擇結構

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

  • 語法:

    if(布林表示式){
    //如果布林表示式為true將執行的語句
    }

if雙選擇結構

  • 那現在有個需求,公司要收購一個軟體,成功了,給人支付100萬元,失敗了,自己找人開發。這樣一個需求用一個if就搞不定了,我們需要兩個判斷,需要一個雙選擇結構,所以有了if-else結構。

  • 語法:

    if(布林表示式){
    //如果布林表示式為true將執行的語句
    }else{
    //如果布林表示式為false將執行的語句
    }

if多選擇結構

  • 我們發現剛才的程式碼不符合實際情況,真實的情況還可能存在ABCD,存在多級判斷。比如90-100就是A,80-90就是B...等等,在生活中我們很多時候的選擇也不僅僅只有兩個,所以我們需要一個多選擇結構來處理這類問題。

  • 語法:

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

if巢狀結構

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

  • 語法:

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

switch選擇結構

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

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

  • 語法:

    switch(expression){
    case value :
    //語句
    break;//可選
    case value :
    //語句
    break;//可選
    //你可以有任意數量的case語句
    default;//可選
    //語句
    }
  • switch語句中的變數型別可以是:

    1. byte,short,int或者char

    2. JavaSE 7 開始

    3. switch支援字串String型別

    4. 同時case標籤必須為字串常量或者字面量

迴圈結構

順序結構的程式語句只能被執行一次。

如果您想要同樣的操作執行多次,就需要使用迴圈結構。

Java中有三種主要的迴圈結構:

  • while 迴圈

  • do…while 迴圈

  • for 迴圈

在Java5中引入了一種主要用於陣列的增強型for迴圈。

while迴圈

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

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

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

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

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

do…while 迴圈

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

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

do {
//程式碼語句
}while(布林表示式);

注意:布林表示式在迴圈體的後面,所以語句塊在檢測布林表示式之前已經執行了。 如果布林表示式的值為 true,則語句塊一直執行,直到布林表示式的值為 false。

  • while和do...while的區別:

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

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

for迴圈

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

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

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

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

關於 for 迴圈有以下幾點說明:

  • 最先執行初始化步驟。可以宣告一種型別,但可初始化一個或多個迴圈控制變數,也可以是空語句。

  • 然後,檢測布林表示式的值。如果為 true,迴圈體被執行。如果為false,迴圈終止,開始執行迴圈體後面的語句。

  • 執行一次迴圈後,更新迴圈控制變數。

  • 再次檢測布林表示式。迴圈執行上面的過程。

Java 增強 for 迴圈

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

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

  • for(宣告語句 : 表示式) { //程式碼句子 }

  • 宣告語句:宣告新的區域性變數,該變數的型別必須和陣列元素的型別匹配。其作用域限定在迴圈語句塊,其值與此時陣列元素的值相等。

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

break continue

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

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