Java分支和if else循環(huán)

1. 分支結(jié)構(gòu)

1.1 if 結(jié)構(gòu)

1 if (/* 判斷語句 true false */) {
2     // 語句體
3 }
4 /*
5 執(zhí)行流程:
6     當程序運行到if結(jié)構(gòu)時,首先判斷if之后的小括號里面的判斷語句是否為true,如果為true,執(zhí)行語句體,如果為false,執(zhí)行大括號以外的內(nèi)容
7 */

1.2 if - else 結(jié)構(gòu)

1 if (/* 判斷語句 true false */) {
2     // true語句體
3 } else {
4     // false 語句體
5 }

執(zhí)行流程:

當前程序運行到if - else 結(jié)構(gòu)時,首先判斷if之后小括號里面的內(nèi)容結(jié)果是什么?如果為true執(zhí)行true語句體,如果為false,執(zhí)行false語句體。世界上最遙遠的距離,是我再 if 里 ,你在 else 里。

1.3 if - else if 結(jié)構(gòu)

1 if (/* 條件匹配 1 */) {
2     // 處理方式1
3 } else if (/* 條件匹配2 */) {
4     // 處理方式2
5 } else if (/* 條件匹配 3 */) {
6     // 處理方式3
7 } else {
8     // 沒有任何匹配情況下的最終處理方式
9 }

執(zhí)行流程:

當前程序運行到if - else if 結(jié)構(gòu)時,匹配if之后的條件,找到對應匹配條件之后,執(zhí)行對應的處理方式,如果沒有任何一個條件匹配,執(zhí)行else里面的處理方式。

1.4 switch - case結(jié)構(gòu)

 1 switch (/* 條件匹配 */) {
 2     case /* 常量1 */:
 3         /* 處理方式1 */
 4         break;
 5     case /* 常量2 */:
 6         /* 處理方式2 */
 7         break;
 8     case /* 常量3 */:
 9         /* 處理方式3 */
10         break;
11     default:
12         /* 最終處理方式 */
13         break;
14 }

執(zhí)行流程:

當程序運行到switch - case 結(jié)構(gòu),使用switch 之后小括號內(nèi)的變量,匹配case之后的常量,找到對應的數(shù)據(jù),按照對應的處理方式進行,如果沒有任何一個條件匹配,執(zhí)行default里面的處理方式。

注意事項:

  1. case 選擇不能出現(xiàn)重復內(nèi)容
  2. break可以省略,代碼會繼續(xù)執(zhí)行到下一個break或者switch - case 大括號
  3. default可以省略,如果不需要可以不寫default結(jié)構(gòu)

2. 循環(huán)結(jié)構(gòu)

2.1 為什么使用循環(huán)?。。?/strong>

在代碼中,出現(xiàn)了大量的重復的功能,使用CV大法可以解決,但是會導致以下一些問題:

  1. 代碼過于臃腫?。?!
  2. 代碼閱讀性極差?。?!
  3. 代碼的維護性極差?。?!

2.2 while 循環(huán)

1 while (/* 循環(huán)條件判斷 */) {
2     // 循環(huán)體
3     // (循環(huán)條件變更)
4 }

執(zhí)行流程:

代碼執(zhí)行到while循環(huán)結(jié)構(gòu)時,首先判斷while之后循環(huán)條件是否為true,如果為true執(zhí)行循環(huán)體(帶有循環(huán)條件變更),直到while之后的條件為false,終止循環(huán)?。。?br> Tips:快捷鍵:終止循環(huán)Ctrl + C

2.3 do - while 循環(huán)

1 do {
2     // 循環(huán)體
3     // 循環(huán)條件變更
4 } while (/* 循環(huán)條件 */)

執(zhí)行流程:

程序運行到do-while循環(huán)結(jié)構(gòu)時,直接執(zhí)行循環(huán)體(循環(huán)條件變更),再來判斷 while之后的循環(huán)條件,如果循環(huán)條件為true,繼續(xù)循環(huán),直到條件為false,終止循環(huán)?。?!

2.4 while 和 do while

while循環(huán)執(zhí)行每一次循環(huán)體,都是在循環(huán)條件之下執(zhí)行的,而do - while第一次執(zhí)行循環(huán)體,是沒有任何的約束的。

所以,如果在開發(fā)中可以使用while也可以使用do while,這里建議盡量使用while循環(huán)。

已知,可控

2.5 for 循環(huán)

1 for (/*循環(huán)條件初始化*/;/*循環(huán)條件判斷*/;/*循環(huán)條件變更*/) {
2     // 循環(huán)體
3 }

for循環(huán)同樣需要變量初始化,判斷表達式,計數(shù)器自增,循環(huán)體,在固定次數(shù)的情況下for循環(huán)比while循環(huán)更加簡潔。不能固定次數(shù)的時候必須使用while或者do-while。

重點for循環(huán)的執(zhí)行順序,中括號內(nèi)標注序號,其中1只執(zhí)行一次,注意計數(shù)器自增是每次循環(huán)執(zhí)行一輪的最后才執(zhí)行的,注意:一輪,最后。

2.6 Scanner的使用

1 代碼中需要用戶修改數(shù)據(jù),從而滿足其他需求,但是我們不能要求用戶修改代碼,重新編譯,重新執(zhí)行?。?!
2 需要在代碼中提供一個讓用戶輸入數(shù)據(jù)的方式:
3 
4 1. 點技能點?。。 緦О?5 在class之前
6     import java.util.Scanner;
7 
8 2. 創(chuàng)建一個Scanner的"變量"
9     Scanner sc = new Scanner(System.in);
10 
11 3. 使用Scanner掃描器中的一些方法,從鍵盤上獲取用戶輸入的數(shù)據(jù)
12     獲取int類型數(shù)據(jù) int num = sc.nextInt(); 
13     獲取float類型數(shù)據(jù) float num = sc.nextFloat(); 
14     獲取double類型數(shù)據(jù) double num = sc.nextDouble(); 
15     獲取char類型數(shù)據(jù) char ch = sc.nextLine().charAt(0);

區(qū)別:

1、while循環(huán)是先判斷后執(zhí)行
2、do - while循環(huán)是先執(zhí)行一遍再判斷
3、for循環(huán)同樣需要變量初始化,判斷表達式,計數(shù)器自增,循環(huán)體,在固定次數(shù)的情況下for循環(huán)比while循環(huán)更加簡潔。不能固定次數(shù)的時候必須使用while或者do-while。

例題

1、輸入任意數(shù)字,得出順序相反的數(shù)字

 1 import java.util.Scanner;
 2 public class Test13 {
 3     public static void main(String[] args) {
 4         //輸入任意數(shù)字,得出順序相反的數(shù)字
 5         Scanner input = new Scanner(System.in);
 6         System.out.print("請輸入數(shù)字:");
 7         int num = input.nextInt();
 8         while(num > 0) {
 9             System.out.print(num%10);
10             num /= 10;
11         }
12     }
13 }

2、用for循環(huán)輸出100次好好學習

1 public class Test5 {
2     public static void main(String[] args) {
3         //用for循環(huán)輸出100次好好學習
4         for(int i = 1;i <= 100;i++) {
5             System.out.println("第"+i+"好好學習");
6         }
7     }
8 }

3、循環(huán)輸入某同學S1結(jié)業(yè)考試的5門課成績,并計算平均分

 1 import java.util.Scanner;
 2 public class Test6 {
 3     public static void main(String[] args) {
 4         //循環(huán)輸入某同學S1結(jié)業(yè)考試的5門課成績,并計算平均分
 5         int sum = 0;
 6         Scanner input = new Scanner(System.in);
 7         System.out.print("輸入學生姓名:");
 8         String name = input.next();
 9         for(int i = 1;i < 6;i++) {
10             System.out.print("請輸入5門功課在第"+i+"門的成績:");
11             int score = input.nextInt();
12             sum =sum  + score;//sum +=score
13         }
14         double Ave = sum/5;
15         System.out.print("王紫的平均分是:" + Ave);
16     }
17 }

4、計算100以內(nèi)(包括100)的偶數(shù)之和

 1 public class Test8 {
 2     public static void main(String[] args) {
 3         //計算100以內(nèi)(包括100)的偶數(shù)之和
 4         int i = 0;
 5         int sum = 0;
 6         while(i < 100) {
 7             i = i + 2;
 8             sum = sum + i;
 9         }
10         System.out.println("100以內(nèi)偶數(shù)之和為:" + sum);
11     }
12 }

5、輸入數(shù)字判斷的奇偶性,并計算該數(shù)字范圍內(nèi)的奇數(shù)偶數(shù)之和

 1 import java.util.Scanner;
 2 public class Test11 {
 3     public static void main(String[] args) {
 4         //輸入數(shù)字判斷的奇偶性,并計算該數(shù)字范圍內(nèi)的奇數(shù)偶數(shù)之和
 5         Scanner input = new Scanner(System.in);
 6         System.out.println("請輸入正整數(shù):");
 7         double num = input.nextDouble();
 8         //判斷奇偶性
 9         if(num % 2 == 0) {
10             System.out.println(num + "是偶數(shù)");
11             //用for循環(huán)計算偶數(shù)之和
12             int sum = 0;
13             for(int i = 0;i < num;i +=2,sum+=i) {
14             }
15             System.out.println(num + "的偶數(shù)之和是:" + sum);
16             //判斷奇偶性
17         }else if(num % 2 == 1) {
18             System.out.println(num + "是奇數(shù)");
19             //計算奇數(shù)之和
20             int sum = 1;
21             int i = 1;
22             while(i < num) {
23                 i += 2;
24                 sum +=i;
25             }
26             System.out.println(num + "的奇數(shù)之和是:" + sum);
27         }
28         
29     }
30 }

6、打印小星星

/*         L  *
   *  *      1  1  
   *  **     2  2
   *  ***    3  3
   *  ****   4  4
   *  *****  5  5
   *  
   */
 1 public class Test15 {
 2     public static void main(String[] args) {
 3         /*         L  *
 4          *  *      1  1  
 5          *  **     2  2
 6          *  ***    3  3
 7          *  ****   4  4
 8          *  *****  5  5
 9          *  
10          */ 
11         
12         //1.外層循環(huán)控制站視的行數(shù)
13         for(int i = 1; i < 12;i ++) {
14             //2。內(nèi)層循環(huán)控制每一層展示的內(nèi)容
15             for(int j = 1;j <= i;j ++) {
16                 System.out.print("*");
17             }
18             System.out.println();
19         }
20     }
21 }
/*    
   *               L  _  *
   *      *        1  4  1
   *     ***       2  3  3
   *    *****      3  2  5
   *   *******     4  1  7
   *  *********    5  0  9
   *  
   */
 1 public class Test16 {
 2     public static void main(String[] args) {
 3         /*    
 4          *               L  _  *
 5          *      *        1  4  1
 6          *     ***       2  3  3
 7          *    *****      3  2  5
 8          *   *******     4  1  7
 9          *  *********    5  0  9
10          *  
11          */
12         
13         //1.控制總行數(shù)
14         for(int i = 1;i <=25;i ++) {
15             //2.處理空格,空格= 總行數(shù) - 行號
16             for(int j = 1;j <= 25 - i;j ++) {
17                 System.out.print(' ');
18             }
19             
20             //3.處理星星  星星個數(shù)是當前行號*2 - 1
21             for(int k = 1;k <= i*2 - 1;k ++) {
22                 System.out.print("*");
23             }
24             System.out.println();
25             
26         }
27     }
28 }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容