1. 程式人生 > >Java基礎複習第三天:流程控制語句if()...else、switch() case、do while()、for迴圈()

Java基礎複習第三天:流程控制語句if()...else、switch() case、do while()、for迴圈()

 

目錄

第一章 流程控制

1.流程控制的分類

2.死迴圈

3.跳出語句(迴圈控制語句)

4.巢狀迴圈


從下次開始,會盡量會直接懟上程式碼,減少文字

------------------------------------------------------------------------------------------------------------------

第一章 流程控制

1.流程控制的分類

a.順序結構:同一個方法中的程式碼一定是從上到下依次執行的

 

b.選擇結構/判斷結構

判斷語句if,一共有三種格式:

格式一:
if(判斷語句){

程式碼塊;

}

....其他程式碼

執行流程:

當代碼執行到if語句時,首先計算判斷語句的結果

如果是true,那麼執行程式碼塊,如果是false跳過程式碼塊

 

 

格式二:

if(判斷語句){

程式碼塊1;

}else {

程式碼塊2;

}

...其他程式碼

執行流程:

當代碼執行到if語句時,首先計算判斷語句的結果

如果結果是true,執行程式碼塊1,如果是false,執行程式碼塊2

 

注意: 程式碼塊1和程式碼塊2  有且僅有一個會執行

 

格式三:

if(判斷語句1){

程式碼塊1;

}else if(判斷語句2){

程式碼塊2;

}else if(判斷語句3){

程式碼塊3;

}.....else{

程式碼塊n;

}

執行流程:
先判斷 判斷語句1 如果是true執行程式碼塊1,執行之後整個if流程結束

再判斷 判斷語句2 如果是true執行程式碼塊2,執行之後整個if流程結束

再判斷 判斷語句3 如果是true執行程式碼塊3,執行之後整個if流程結束

依次類推....

如果以上所有的判斷語句都是false,那麼無條件執行else後面程式碼塊n

 

注意: 以上程式碼塊1到程式碼塊n 有且僅有一個會執行

 

總結:

三種if分別什麼時候使用?

如果只需要判斷一種情況,那麼用if的第一種格式

如果只需要判斷兩種情況,那麼用if的第二種格式

如果需要判斷多種情況,那麼用if的第三種格式

 

選擇語句switch 就一種格式:
格式:

switch(表示式/變數名){

case 固定值1:

程式碼塊1;

break;

case 固定值2:

程式碼塊2;

break;

case 固定值3:

程式碼塊3;

break;

....

default: // 預設

程式碼塊n;

break;

}

....其他程式碼

執行流程:

當代碼執行到swtich時,首先計算表示式或者變數的值

取出表示式或者變數的值 與下面固定值進行匹配,如果相等,那麼久執行後面的程式碼塊

執行完之後,遇到了break,break含義是結束整個switch

如果所有的固定值都沒有匹配的,那麼無條件執行default後面的程式碼塊n

 

注意1:  以上程式碼塊1-程式碼塊n 有且僅有一個會執行

 

注意2: switch(表示式)中表達式的資料型別,

JDK7之前的  byte short(char) int 列舉(enum)

JDK7之後新增 String

c.case的穿透

i.break能不能不寫???可以不寫

 

ii.如果刪除了case後面的break那麼出現"穿透現象"

什麼叫穿透現象:

如果case後面沒有break,那麼會下一個case後的程式碼塊,而不需判斷

iii.使用case的穿透現象改造月份案例,可以達到簡化程式碼的作用

d.迴圈結構

讓一段程式碼反覆的執行

所有的迴圈結構都有四部分組成:

①.定義性語句(計數器)

②.迴圈條件(控制迴圈是否繼續)

③.迴圈體(迴圈要執行的那段程式碼)

④.增量/步進語句(讓計算器計數)

 

迴圈結構之for

格式:

for(①.定義性語句(計數器);②.迴圈條件(控制迴圈是否繼續);④.增量/步進語句){

③.迴圈體(迴圈要執行的那段程式碼)

}

....其他程式碼

執行流程:

① ---> ②③④ ---> ②③④ ---> ...--->②

 

 

練習1: 列印 10次 "我對面的後面愛鳳姐"

// 計數器從0開始 那麼 計數器<幾 迴圈就是幾次
for (int i = 0;i < 10;i++){
    // 0 1 2 3 4 5 6 7 8 9
    System.out.println("我對面的後面愛鳳姐");
}

 

練習2:使用迴圈,列印1-100之間所有的整數

//1.明確迴圈次數
for (int i = 1; i<101;i++){
    //2.分析規律:
    /*
    *   i的值     要列印的值
    *   1           1
    *   2           2
    *   3           3
    *   x           x
    *   規律:要列印的值 和 i的值是一樣的
    * */
    /*
    *  i = 1 2 3 4 5....100
    *  列印 = 1 ..... 100
    *  i 和 要列印的值一一對應
    * */
    System.out.println(i);
}

 

練習3:使用迴圈,列印1-100之間所有的整數的累加和:

//定義一個求和的變數名
        int sum = 0;
        //1.先想辦法列印1-100
        for (int i = 1;i < 101;i++) {
            // i = 1 2 3 4... 100
            //列印= 1 2 3 4....100
//            System.out.println(i);
            //2.把要列印的數,加到sum
//            sum = sum+i;
            sum+=i;
            /*
            *  sum = 1;
            *  sum = 1 + 2
            *  sum = 1 + 2 + 3;
            *  sum = 1 + 2 + 3 + 4
            *  ...
            *  sum = 1 + 2 + 3 + 4 ... 100
            *
            * */
        }
        //2.列印sum的值
        System.out.println(sum);

 

練習4:使用迴圈,計算1-100之間的偶數和

//分步驟慢慢計算

//1.列印1-100所有的數
//2.1-100的和
//3.求偶數和
int sum = 0;
for (int i = 1; i < 101; i++) {
   //求偶數和
    //判斷偶數的條件
    if(i % 2 == 0) {
        sum += i;
    }
}
//4.最後列印偶數和sum
System.out.println(sum);

 

 

迴圈結構之while

格式:

①計算器;

while(②迴圈條件){

③迴圈體;

④增量語句;

}

執行流程:
①--->②③④---->②③④--->②③④ -->.....->②

 

練習1:列印10次"HelloWorld"

//使用while
int i = 0;
while (i < 10) {
    System.out.println("HelloWorld");
    //千萬別忘記++
    i++;
}
練習2:計算1-100之間的奇數和

//計算器
int i = 1;
//求和變數
   int sum = 0;
   while(i < 101){
      //判斷是否為奇數
        if(i % 2 == 1) {
          //如果是加到sum
           sum += i;
      }
       i++;
     }
          //列印結果
         System.out.println(sum);

 

迴圈結構之do...while

①.定義性語句

②.迴圈條件

③.迴圈體

④.增量/步進語句

 

格式:

①.定義性語句

do{

③.迴圈體

④.增量/步進語句

}while(②.迴圈條件);

執行流程:
           ①③④ ---> ②③④ --> ②③④---> ...--->②

 

do..while迴圈的特點: 無論迴圈條件是什麼,都會先執行一次迴圈體

 

總結:for和while和do..while迴圈的區別

do..while(基本不用的): 迴圈體至少執行一次

for迴圈(最常用的):迴圈結束之後,計數器不能訪問

while迴圈(偶合用用的):迴圈結束之後,計數器還可以繼續使用

 

2.死迴圈

永不停止的迴圈

格式:

while(true){

迴圈體;

}

for(;;){

迴圈體;

}

如果沒有迴圈體,那麼大括號可以省略,但是必須用;結束

while (true);
            for (;;);

3.跳出語句(迴圈控制語句)

break;

a.第一可以用於switch中,代表結束整個switch

b.第二可以用於迴圈中,立刻結束整個迴圈

 

continue;

只能用於迴圈,跳過本次迴圈

 

注意: break只能用於swtich和迴圈,不能用於if

 

4.巢狀迴圈

一個迴圈的迴圈體中又有另外一個迴圈

格式:

for(;;){

for(;;){

 

}

}

比如:

// 2011年 到 2013年 這三年的每年365
for(int j = 2011;j < 2014;j++) {
    for(int i = 1;i<=365;i++){
        System.out.println(j+","+""+i+"");
    }
}

// 2021年 到 2023年 這三年的每年12
for(int i = 2021;i < 2024;i++) {
    //12個月
    for (int j = 1; j < 13; j++) {
        //i代表年 j代表月
        System.out.println(i+""+j+"");
    }
}

//列印圖形

要求使用巢狀迴圈,列印以下圖形:
* * * * *

* * * * *

* * * * *

 

for(int i = 0;i<3;i++){ //3
    //每行5
    for(int j = 0;j<5;j++) {
        System.out.print("* ");
    }
    System.out.println();
}

 

總結: 內層迴圈體執行的次數 = 外層迴圈次數 * 內層迴圈的次數