Java基礎(04)— 流程控制

Java流程控制

用戶交互Scanner

  • 以前咱們學的基本語法中咱們並無實現程序和人的交互,可是Java給咱們提供了這樣一個工具類,咱們能夠獲取用戶的輸入。java.util.Scanner 是Java5的新特徵,咱們能夠經過Scanner類來獲取用戶的輸入。java

  • 基本語法:算法

    Scanner S = new Scanner( System. in);
  • 經過Scanner類的next()與nextLine()方法獲取輸入的字符串,在讀取前咱們通常須要使用hasNext()與hasNextLine()判斷是否還有輸入的數據。express

    截圖

    截圖

    截圖

  • Scanner進階使用編程

    截圖

    截圖

順序結構

  • Java的基本結構就是順序結構,除非特別指明,不然就按順序一句一句執行數組

  • 順序結構是最簡單的算法結構,它是任何一個算法都離不開的一種基本算法結構服務器

  • 語句與語句之間,框與框之間是按從上到下的順序進行的,它是由若干個依次執行的處理步驟組成。工具

    截圖

選擇結構

if 選擇

  • 單選擇結構性能

    • 咱們不少時候須要去判斷一個東西是否可行,而後咱們纔去執行,這樣一個過程在程序中用if語句來表示
    • 語法
    if(true){
    	//若是布爾表達式爲true將執行的語句
    }

    截圖

  • 雙選擇結構spa

    • 假如司收購一個軟件,成功了給人支付100萬,失敗了本身找人開發。須要刷過你選擇結構 if -else
    • 語法
    if(true){
    	//若是布爾值爲true
    }else{
    	//若是布爾值爲false
    }

    截圖

  • 多選擇結構設計

    • 咱們發現上面的代碼不符合實際要求,實際上可能存在A,B,C,D等不少區間的狀況。生活中更多的時多區間結構,所以咱們須要一個多選擇結構來處理
    • 語法
    if(true){
        //表達式1爲true執行
    }else if(true){
        //表達式2爲true執行
    }else if(true){
        //表達式3爲true執行
    }else{
        //表達式都不爲true執行
    }

    截圖

  • 嵌套的if結構

    • 使用嵌套的if-else語句是合法的。也就是能夠在一個if-else中使用if或者else if語句。
    • 語法
    if(true){
    	//表達式1爲true執行的代碼塊
    	if(true){
    		//表達式2爲true執行的代碼塊
    	}
    }

switch 選擇

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

  • switch case 語句判斷一個變量與一系列值中的某個值相等,每一個值稱爲一個分支

  • switch 語句中的變量類型能夠是

    • byte,short,int 或者 char
    • 從 Java SE 7 開始,switch 支持字符串 String 類型了
    • 同時case標籤必須爲字符串常量或者字面量
  • 語法

switch(expression){
    case value:
        //語句
        break;//可選
    case value:
        //語句
        break;//可選
    //你能夠有任意數量的case語句
    default ://可選
        //語句
}

截圖

※ 一個case後面要加一個break,養成良好的習慣

  • 字節碼執行

截圖

循環結構

while 循環

  • while是最基本的循環
while(true){
    //循環內容
}
  • 只要爲true循環就回一直執行,咱們一般會用一個表達式失效的方式來結束循環
  • 也有少部分狀況須要循環一直執行,好比服務器的請求響應監聽等
  • 循環條件爲一直true就回無限循環(死循環),正常的業務編程中儘可能避免死循環,它會影響程序性能也會形成程序卡死崩潰!
//思考: 計算 1+2+3+ ... +100 = ?
public static void main(String[] args) {
    //輸出1~100
    int i = 0;
    int sum = 0;
    while(i <= 100){
        sum += i;
        i++;
    }
    System.out.println("1+2+3+ ... +100 = " + sum);
}
//死循環
public static void main(String[] args) {
    while(true){
        //等待客戶端連接(監聽)
        //定時檢查
        //。。。。。。
    }
}

do...while 循環

  • 對於while語句而言,若是不知足條件是不能進入循環的。但有時候咱們須要即便不知足也要至少執行一次。
do{
	//代碼語句
}while(true)
  • while和do...while區別
    • while先判斷後執行,do...while先執行後判斷
    • do...while循環和while相似,不一樣的是,do...while循環至少會執行一次,這是他們主要的差異
public static void main(String[] args) {
    //輸出1 + 2 + 3 + ... + 100
    int i = 0;
    int sum = 0;
    do{
        sum += i;
        i++;
    }while (i <= 100);
    System.out.println("1+2+3+ ... +100 = " + sum);
}

public static void main(String[] args) {
    //輸出1 + 2 + 3 + ... + 100
    int a = 0;
    while (a < 0){
        System.out.println(a);
        a++;
    }
    System.out.println(" ========== ");
    do{
        System.out.println(a);
        a++;
    }while (a<0);
}

for 循環

  • 雖然全部循環結構均可以用while或者do...while標識,但Java提供了另外一種語句—for循環,使一些循環結構變得更加簡單
  • for循環語句使支持迭代得一種通用結構,使最有效,最靈活得循環結構
  • for循環執行得次數使在執行前就肯定得,語法以下
for( 初始化值; 布爾表達式; 更新){
	//代碼塊
}
  • 練習

    • 計算0-100之間得奇數和偶數得和
    /*
    關於for循環有如下幾點說明:
        1.最早執行初始化步驟,能夠聲明一種類型,但可初始化一個或多個循環控制變量,也可使空語句。
        2.而後,檢測布爾表達式的值。若是爲true,循環體被執行,若是爲false,循環終止,開始執行循環體後面的語句
        3.執行一次循環後,更新循環控制變量(迭代所以控制循環變量的增減)
        4.再次檢測布爾表達式,循環執行上面的過程
         for(;;){}//也是一種死循環
    */
    public static void main(String[] args) {
        int oddSum = 0; //奇數
        int evenSum = 0;//偶數
        for (int i = 0; i <= 100; i++){
            if(i % 2 != 0){
                oddSum += i;
            }else{
                evenSum += i;
            }
        }
        System.out.println("奇數的和:" + oddSum);	//2500
        System.out.println("偶數的和:" + evenSum);	//2550
    }
    • 用while或者for循環出1-1000之間能被5整數得數,而且每行輸出三個
    public static void main(String[] args) {
        //for循環快捷鍵 :1000.for
        for (int i = 1; i <= 1000; i++) {
        	if(i%5 == 0){
        		System.out.print(i+"\t");
        	}
        	if(i%(5*3) == 0){
        		System.out.println();
        	}
        	/*
       	      println 輸出完會換行
        	      print   輸出完不換行
        	*/
        }
    }
    • 打印九九乘法表
    public static void main(String[] args) {
        /*
            99乘法表
            1.打印第一列,很簡單
            2.把固定的1再用一個循環抱起來
            3.去掉重複 i <= j
            4.調試樣式
             */
        for (int j = 1; j <= 9; j++) {
            for (int i = 1; i <= j; i++) {
                System.out.print(i+"*"+j+"="+(i*j)+"\t");
            }
            System.out.println();
        }
    }

加強for循環

  • 咱們只是先見一面,作個瞭解,以後數組咱們重點使用

  • Java5引入一個主要主要用於數組或集合的加強型for循環

  • Java加強for循環語法

    for(聲明語句:表達式){
        /*
        聲明語句:聲明新的局部變量,該變量得類型必須和數組元素的類型匹配,起做用域限定在循環語句塊,其值與此時數組元素的值相等
        表達式:表達式是要訪問的數組名,或者是返回值爲數組的方法
        */
    	//代碼句子
    }

    截圖

  • break continue goto

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

    截圖

    • continue語句用在循環語句體中,用於終止某次循環過程,即跳過循環體中還沒有執行的語句,接着進行下一次是否執行循環的斷定。

    截圖

    • 關於goto關鍵字 goto關鍵字很早就在程序設計語言中出現。儘管goto還是Java的- 個保留字,但並未在語言中獲得正式使用; Java沒有goto。然而,在break和continue這兩個關鍵字的身上,咱們仍然能看出一些goto的影子—帶標籤的break和continue.
      • "標籤" 是指後面跟一個冒號的標識符,例如: label:
      • 對Java來講惟一 用到標籤的地方是在循環語句以前。 而在循環以前設置標籤的惟一理由是:咱們但願在其中嵌套另外一個循環,因爲break和continue關鍵字一般只中斷當前循環,但若隨同標籤使用,它們就會中斷到存在標籤的地方。

    截圖

  • 打印三角形及Debug

    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 = 1; j < i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
相關文章
相關標籤/搜索