Java流程控制
用戶互動Scanner
1.Scanner物件
- java.util.Scanner是Java5的新特性,我們可以通過Scanner類來獲取用戶的輸入,基本語法:
Scanner s = new Scanner(System.in);
- 通過Scanner類的next()與nextLine()方法獲取輸入的字串,在讀取前我們一般需要使用hasNext()與hasNextLine()判斷是否還有輸入的資料
hasNext()判斷是否還有輸入的資料

hasNextLine()判斷是否還有輸入的資料

2.next()和nextLine()的區別
- next():
- 一定要讀取到有效字符后才可以結束輸入
- 對輸入有效符之前遇到的空白,next()方法會自動將其去掉
- 只有輸入有效字符后才將后面輸入的空白作為分隔符或者結束符
- next()不能得到帶有空格的字串 - nextLine():
- 以Enter為結束符也就是說nextLine()方法回傳的是輸入回車之前的所有字符
- 可以獲得空白
3.Scanner必備結構

Scanner進階使用
1.Scanner進階使用01

2.Scanner進階使用02

順序結構
- Java的基本結構就是順序結構,除非特別指明,否則就按照順序一句一句執行
- 順序結構是最簡單的演算法結構
- 陳述句與陳述句之間,框與框之間是按從上到下的順序進行的,他是由若干依次執行的處理步驟組成的,它是任何演算法都離不開的一種基本演算法結構

if選擇結構
if 陳述句至少有一個 else 陳述句,else 陳述句在所有的else if 陳述句之后,
if 陳述句可以有若干個 else if 陳述句,它們必須在 else 陳述句之前,
但其中一個 else if 陳述句檢測為 true,其他的 else if 以及 else 陳述句都將跳過執行
1.if單選擇結構
- 我們很多時候需要去判斷一個東西是否可行,然后才去執行,這樣一個程序在程式中用if陳述句來表示,語法:
if(布爾運算式){
//如果布爾運算式為true將執行的陳述句
}

示例:

2.if雙選擇結構
- 那現在有個需求,公司要收購一個軟體,成功了,給人支付100萬元,失敗了,自己找人開發,這樣的需求用一個if就搞不定了,我們需要有兩個判斷,需要一個雙選擇結構,所以就有了if-else結構,語法:
if(布爾運算式){
//如果布爾運算式的值為true
}else{
//如果布爾運算式的值為false
}

示例:

3.if多選擇結構
- 我們發現剛才的代碼不符合實際情況,真實的情況還可能存在ABCD,存在區間多級判斷,比如90-100分就是A,80-90就是B……等等,在生活中我們很多時候的選擇也不僅僅只有兩個,所以我們需要一個多選擇結構來處理這類問題!語法:
if (布爾運算式){
//如果布爾運算式的值為true執行代碼
}else if (布爾運算式2){
//如果布爾運算式2的值為true執行代碼
}else if (布爾運算式3){
//如果布爾運算式3的值為true執行代碼
}else{
//如果以上布爾運算式都不為true執行代碼
}

示例:

4.嵌套的if結構
- 使用嵌套的 if……else 陳述句是合法的,也就是說你可以在另一個 if 或者 else if 陳述句中使用 if 或者 else if 陳述句,你可以像 if 陳述句一樣嵌套 else if……else,語法:
if (布爾運算式1){
//如果布爾運算式1的值為true執行代碼
if (布爾運算式2){
//如果布爾運算式2的值為true執行代碼
}
}
- 思考?我們需要尋找一個數,在1-100之間(二分查找)
Switch選擇結構
- 多選擇結構還有一個實作方式就是switch case陳述句
switch(expression){
case value:
//陳述句
break;
case value:
//陳述句
break; // 可選
// 可以有任意數量的case陳述句
default : // 可選
// 陳述句
}
-
switch 陳述句中的變數型別可以是:
- byte、short、int 或者 char
- 從 Java SE 7 開始
- switch 支持字串 String 型別了
- 同時 case 標簽必須為字串常量或字面量

-
每寫一個case都要有對應的break,不然會造成case穿透現象
-
IDEA反編譯
- 找到專案結構-->Project-->專案編譯輸出路徑
- 將class檔案拷貝到Java檔案路徑下
- 在IDEA中打開class檔案得到反編譯代碼
- switch中的String文本比較是通過hashCode()進行的

While回圈詳解
- while是最基本的回圈,它的結構為:
while(布爾運算式){
// 回圈內容
}
-
只要布爾運算式為true,回圈就會一直執行下去,
-
我們大多數情況是會讓回圈停止下來的,我們需要一個讓運算式失效的方式來結束回圈,示例:

-
少部分情況需要回圈一直執行,比如服務器的請求回應監聽等,示例:

-
回圈條件一直為true就會造成死回圈,我們正常的業務編程中應該盡量避免死回圈,會影響程式性能或者造成程式卡死崩潰!
-
計算:1+2+3+……+100=?

Do……While回圈
- 對于while語言而言,如果不滿足條件,則不能進入回圈,但有時候我們需要即使不滿足條件,也至少讓程式執行一次,
- do……while回圈和while回圈很相似,不同的是,do……while回圈至少會執行一次,
do{
// 代碼陳述句
}while(布爾運算式);
示例:

- while和do……while的區別
- while先判斷后執行,do……while是先執行后判斷
- do……while總是保證回圈體會被至少執行一次!這是他們的主要差別,
示例:

For回圈詳解
- 雖然所有回圈結構都可以用while或者do……while表示,但Java提供了另一種陳述句——for回圈,使一些回圈結構變得更加簡單,
- for回圈陳述句是支持迭代的一種通用結構,是最有效,最靈活的回圈結構,
- for回圈執行的次數是在執行前就確定的,快捷鍵100.for語法格式如下:
for (初始化;布爾運算式;更新){
// 代碼陳述句
}

-
練習1:計算0到100之間的奇數和偶數的和

-
練習2:用while或for回圈輸出1~1000之間能被5整除的數,并且每行輸出3個

-
練習3:列印九九乘法表
列印九九乘法表

增強for回圈
- Java5 引入了一種主要用于陣列或集合的增強型for回圈,格式如下:
for(宣告陳述句:運算式){
// 代碼陳述句
}
- 宣告陳述句:宣告新的區域變數,該變數的型別必須和陣列元素的型別匹配,其作用域限定在回圈陳述句塊,其值與此時陣列元素的值相等,
運算式:運算式是要訪問的陣列名,或者是回傳值為陣列的方法

break,continue,goto
1.break在任何回圈陳述句的主體部分,均可用break控制回圈的流程,break用于強制退出回圈,不執行回圈中剩余的陳述句,(可用于switch陳述句中)

2.continue陳述句用在回圈陳述句體內,用于終止某次回圈的程序,即跳過回圈體中尚未執行的陳述句,接著進行下一次是否執行回圈的判定,

3.關于goto關鍵字
- goto關鍵字很早就在程式設計語言中出現,盡管goto仍是Java的一個保留字,但并未在語言中得到正式使用;Java沒有goto,然而,在break和continue這兩個關鍵字身上,我們仍然能看出一些goto的影子——帶標簽的break和continue,
- "標簽"是指后面跟一個冒號的識別符號,例如:label:
- 對Java來說唯一用到標簽的地方是在回圈陳述句之前,而在回圈之間設定標簽的唯一理由是:我們希望在其中嵌套另一個回圈,由于break和continue關鍵字通常只中斷當前回圈,但若隨同標簽使用,它們就會中斷到存在標簽的地方,
示例:

列印三角形及Debug

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/249699.html
標籤:Java
