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里面的處理方式。
注意事項:
- case 選擇不能出現(xiàn)重復內(nèi)容
- break可以省略,代碼會繼續(xù)執(zhí)行到下一個break或者switch - case 大括號
- default可以省略,如果不需要可以不寫default結(jié)構(gòu)
2. 循環(huán)結(jié)構(gòu)
2.1 為什么使用循環(huán)?。。?/strong>
在代碼中,出現(xiàn)了大量的重復的功能,使用CV大法可以解決,但是會導致以下一些問題:
- 代碼過于臃腫?。?!
- 代碼閱讀性極差?。?!
- 代碼的維護性極差?。?!
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 }