1. 程式人生 > 其它 >Java控制流程

Java控制流程

Java控制流程

Scanner物件

  • java.util.Scannner是Java5的新特徵,是Java提供一個的工具類,以獲取使用者的輸入。

  • 基本語法

    Scanner scanner = new Scanner(System.in)
    
  • 通過Scanner類的next()與nextLine()方法獲取輸入的字串,在讀取前我們一般需要使用hasNext()與hasNextLine()判斷是否還有輸入的資料。

  • next():

    1. 一定要讀取到有效字串後才可以結束輸入。
    2. 對輸入有效字元後之前遇到的空白,next()方法會自動將其去掉。
    3. 只有輸入有效字元後才將其後面輸入的空白作為分隔符或者結束符。
    4. next()不能得到帶有空格的字串。
  • nextLine():

    1. 以Enter為結束符,也就是說nextLine()方法返回的是輸入回車之前的所有字元。
    2. 可以獲得空白

例項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);
}