Java流程控制——基礎階段
阿新 • • 發佈:2021-07-14
Java流程控制——基礎階段
1. 使用者互動Scanner
1.1 Scanner物件
-
之前的基本語法沒有實現程式和人的互動,但Java給我們提供了一個工具類Scanner可以用來獲取使用者的輸入。java.util.Scanner是Java5的新特徵,我們可以通過Scanner類來獲取使用者的輸入
-
基本語法
Scanner s = new Scanner(System.in);
-
通過Scanner類的next()與nextline()方法獲取輸入的字串,在讀取之前我們一般需要使用hasNext() 與 hasNextLine()判斷是否還有輸入的資料
-
next()
- 一定要讀取到有效字元後才可以結束輸入
- 對輸入有效字元之前遇到的空白,next()方法會自動將其去掉
- 只有輸入有效字元後才將其後面輸入的空白作為分隔符或者結束符
- next()不能得到帶有空格的字串
-
nextline()
- 以Enter為結束符,也就是說,nextline()方法返回的是輸入回車之前的所有字元
- 可以獲得空白
\\next()應用 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()){ //接受使用者的輸入 String str = scanner.next(); System.out.println("輸出的內容為:"+str); } //凡是屬於IO流的類如果不關閉就會一直佔用資源,要養成好習慣用完就關掉 scanner.close(); } }
\\nextline()應用 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()){ String str = scanner.nextLine(); System.out.println("輸出內容為:"+str); } scanner.close(); } }
// 例項
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args) {
//輸入多個數字,並求取總和與平均數,每輸入一個數字用回車確認,通過輸入非數字來結束並輸出執行結果
Scanner scanner = new Scanner(System.in);
// 和
double sum = 0;
// 計算輸出了多少個數字
int m = 0;
// 通過迴圈判斷是否還有輸入,並在裡面對每一次進行求和統計
while (scanner.hasNextDouble()){
double x = scanner.nextDouble();
// System.out.println("你輸入了第"+m+"個數據,當前結果sum="+sum);
m++;
sum = x+sum;// sum+=x;
System.out.println("你輸入了第"+m+"個數據,當前結果sum="+sum);
}
System.out.println(m+"個數的總和為:"+sum);
System.out.println(m+"個數的平均值為:"+sum/m);
scanner.close();
}
}
2. 順序結構
- Java的基本結構就是順序結構,除非特別指明,否則就是按照順序操作
- 順序結構是最簡單的演算法結構
- 語句與語句之間,框與框之間都是按從上到下順序進行的,它是有若干個依次執行的處理步驟組成的,它是任何一個演算法都離不開的基本結構。
3. 選擇結構
-
if單選結構
-
語法:
if(布林表示式){ // 如果布林表示式為true執行的語句 }
-
-
if雙選結構
- if ...else
-
if多選擇結構
if(){ }else if(){ }else if(){ }else { }
-
巢狀的if結構
- 可以在if...else語句中巢狀使用else...if
-
switch多選擇結構
- switch case 語句判斷一個變數與一系列值中某個值是否相等,每個值稱為一個分支
- switch 語句中的變數型別可以是:
- byte、short、int或者char
- 支援String型別
- 同時case標籤必須為字串常量或字面量
4. 迴圈結構
-
while迴圈
-
最基本的迴圈,它的結構為
while(布林表示式){ //迴圈內容 }
-
只要表示式為true,迴圈就會一種會迴圈下去
-
大多數情況下,我們需要一個讓表示式失效的方式來結束迴圈
-
少部分情況下需要程式一直執行,如伺服器的請求響應
-
-
do...while迴圈
-
對於while迴圈而言,如果不滿足條件,則不能進入迴圈。但有時候我們需要即使不滿足條件也至少執行一次
-
而do...while 迴圈與while最大的不同就是至少執行一次
-
while與do...while區別:
- while先判斷後執行,do...while先執行後判斷
- do...while總是保證迴圈體能至少執行一次
do{ //程式碼語句 }while(布林表示式)
-
-
for迴圈
-
for迴圈語句是支援迭代的一種通用結構,是最有效、最靈活的迴圈結構
-
for迴圈的執行次數是在執行前確定的,語法格式如下:
for(初始化;布林表示式;更新){ //程式碼語句 }
-
//100.for可以在IDEA中快捷輸入for迴圈
-
-
在Java5中引入了一種主要用於陣列的增強型for迴圈
-
先了解,後面再仔細學習
-
用於迴圈陣列和集合的
-
語法格式:
for(宣告語句:表示式){ //程式碼語句 }
public class ForDemo05 { public static void main(String[] args) { int [] numbers = {10, 20, 30, 40, 50}; //定義了一個數組 for (int i = 0; i < 5; i++) { System.out.println(numbers[i]); } System.out.println("================"); //遍歷陣列的元素 for (int x:numbers){ System.out.println(x); } } }
-
5. break&continue
-
// break在任何迴圈語句的主體部分,均可用break控制迴圈的流程 // break用於強行退出迴圈,不執行迴圈中剩餘的語句(也在switch中使用) // // continue 語句在迴圈語句體中,用於種植某次迴圈過程,即跳過迴圈體中尚未執行的語句。接著進行下一次是否執行迴圈的判定
-
關於goto關鍵字
- goto是Java保留字,但未在語言中得到正式使用
6. 練習
public class TestDemo {
public static void main(String[] args) {
//列印三角形 5行
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=2; j<=i;j++){
System.out.print("*");
}
System.out.println();
}
}
}
- Debug技巧:先在程式某行點選斷點,然後debug,接著可以選擇step into按鈕繼續一行一行執行程式,觀察程式結構在console中的變化