Java控制流程
Java控制流程
Scanner物件
-
java.util.Scannner是Java5的新特徵,是Java提供一個的工具類,以獲取使用者的輸入。
-
基本語法
Scanner scanner = new Scanner(System.in)
-
通過Scanner類的next()與nextLine()方法獲取輸入的字串,在讀取前我們一般需要使用hasNext()與hasNextLine()判斷是否還有輸入的資料。
-
next():
- 一定要讀取到有效字串後才可以結束輸入。
- 對輸入有效字元後之前遇到的空白,next()方法會自動將其去掉。
- 只有輸入有效字元後才將其後面輸入的空白作為分隔符或者結束符。
- next()不能得到帶有空格的字串。
-
nextLine():
- 以Enter為結束符,也就是說nextLine()方法返回的是輸入回車之前的所有字元。
- 可以獲得空白
例項1
//建立一個掃描物件,用於接收鍵盤資料 Scanner sca = new Scanner(System.in); System.out.println("使用next方式接收:"); //判斷使用者有沒有輸入字串 if (sca.hasNext()){ //使用next方式接收 String str = sca.next(); System.out.println("輸出內容為" + str); } //凡是屬於IO流的類,如果不關閉它就會一直佔用資源,所以要養成用完就關閉的習慣 sca.close();
例項2
//從鍵盤接收資料
Scanner sca = new Scanner(System.in);
System.out.println("使用nextLine方式接收:");
//判斷是否還有輸入
if (sca.hasNextLine()){
String str = sca.nextLine();
System.out.println("輸出內容為:"+str);
}
sca.close();
例項3
Scanner scanner = new Scanner(System.in); System.out.println("輸入內容:"); String str = scanner.nextLine(); System.out.println("輸入的內容為:"+str); scanner.close();
例項4
Scanner scanner = new Scanner(System.in);
//從鍵盤接收資料
int i = 0;
float j = 0.0f;
System.out.println("請輸入整數:");
if (scanner.hasNextInt()){
i = scanner.nextInt();
System.out.println("整數資料:"+i);
}else {
System.out.println("輸入的不是整數資料");
}
System.out.println("請輸入小數:");
if (scanner.hasNextInt()){
j = scanner.nextFloat();
System.out.println("小數資料:"+j);
}else {
System.out.println("輸入的不是小數資料");
}
scanner.close();
例項5
//輸入多個數字,並求其總和與平均數,每輸入一個數字用回車確認,通過輸入非數字來結束輸入並輸出結果
int sum = 0;
int count = 0;
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入若干個數字:");
while (scanner.hasNextInt()){
int i = scanner.nextInt();
sum+=i;
count++;
}
System.out.println("輸入的數字總和為:"+sum+",輸入總和的平均數為"+sum/count);
scanner.close();
順序結構
- JAVA的基本結構就是順序結構,除非特別指明,否則就按照順序一句一句執行。
- 順序結構是最簡單的演算法結構
- 語句與語句之間,框與框之間是按從上到下的順序進行的,它是有若干個依次執行的處理步驟組成的,它是任何一個演算法都離不開的一種基本演算法結構。
選擇結構
JAVA的選擇結構有如下幾種:
-
if單選結構
-
if雙選結構
-
if多選結構
-
巢狀的if結構
-
switch多選擇結構
if單選結構
-
我們很多時候需要去判斷一個東西是否可行,然後我們才去執行,這樣一個過程在程式中用if語句表示
-
語法
if(布林表示式){ //如果布林表示式為true將執行的語句 }
-
程式碼例項
Scanner scanner = new Scanner(System.in); System.out.println("請輸入內容:"); String str = scanner.nextLine(); //equals:判斷字串是否相等,注意:少用==去判斷字串是否相等 if(str.equals("Hello")){ System.out.println("Hi~"); } scanner.close();
輸入以及對應得輸出結果:
請輸入內容: Hello Hi~
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將執行的語句 } }
-
思考?尋找一個數,在1-100之間
switch多選擇結構
-
switch case 語句判斷一個變數與一系列值中某個值是否相等,每個值稱為一個分支
-
switch 語句中的變數型別可以是:byte、short、int、char、String
-
從Java SE 7開始,switch支援String型別
-
case標籤必須為字串常量或字面量
-
語法:
swtich(expression){ case value : //語句 break; //可選 case value : //語句 break; //可選 case value : //語句 break; //可選 //...... default : //可選 //語句 }
迴圈結構
While迴圈
-
while是最基本的迴圈,他的結構為
while(布林表示式){ //迴圈結構 }
-
只要布林表示式為true,迴圈就會一直執行下去。
-
我們大多是情況是會讓迴圈停止下來的,我們需要一個讓表示式失效的方式來結束迴圈
-
少部分情況需要迴圈一直執行,比如伺服器的請求響應監聽等。
-
迴圈條件一直為true就會造成無限迴圈【死迴圈】,我們正常的業務程式設計中應該儘量避免死迴圈。會影響程式效能或者造成程式卡死崩潰。
-
輸出1-100
int i = 0; while(i<100){ i++; System.out.println(i); }
-
計算1+2+3+...+100
int j = 0; int sum = 0; while(j<100){ j++; sum += j; } System.out.println(sum);
Do...while迴圈
-
對於while語句而言,如果不滿足條件,則不能進入迴圈。但有時候我們需要即使不滿足條件也至少執行一次。
-
do...while迴圈和while迴圈相似,不同的是,do...while迴圈至少會執行一次
do{ //程式碼語句 }while(布林表示式);
-
計算1+2+3+...+100
int i = 0; int sum = 0; do{ sum += i; i++; }while(i<=100); System.out.println(sum);
For迴圈
-
for迴圈語句是支援迭代的一種通用結構,是最有效、最靈活的迴圈結構。
-
for迴圈執行的次數是在執行前就確定的。語法格式如下:
for(初始化; 布林表示式; 更新){ //程式碼語句 }
-
計算1+2+3+...+100
int sum = 0; for (int i = 1;i<=100;i++){ sum += i; } System.out.println(sum);
-
九九乘法表
for(int a = 1; a <= 9; a ++){ for(int b = 1; b <= a; b ++){ System.out.print(a + "*" + b + "=" + a*b + "\t"); } System.out.println(); }
增強for迴圈
-
Java5引入了一種主要用於陣列或集合的增強型for迴圈。
-
Java增強for迴圈語法格式如下:
for(宣告語句 : 表示式) { //語句程式碼 }
-
宣告語句:宣告新的區域性變數,該變數的型別必須和陣列元素的型別匹配。其作用域限定在迴圈語句塊,其值與此時陣列元素的值相等。
-
表示式:表示式是要訪問的陣列明,或者是返回值為陣列的方法。
-
簡單的一個例子來了解,後續再做補充
int[] numbers = {10,20,30,40,50}; for(int x: numbers){ System.out.println(x); }
輸出結果
10
20
30
40
50
break continue
-
break在任何迴圈語句的主體部分,均可用break控制迴圈的流程,break用於強行退出迴圈,不執行迴圈中剩餘的語句。
int i = 0; while (i<100){ i++; System.out.println(i); if (i==30){ break; } }
-
continue語句用在迴圈語句體中,用於終止某次迴圈過程,即跳過迴圈體中尚未執行的語句,接著進行下一次是否執行迴圈的判定。
int i = 0;
while (i<100){
i++;
if(i%10==0){
System.out.println();
continue;
}
System.out.println(i);
}