java基礎學習_基礎語法(上)03_day04總結

============================================================================= =============================================================================

涉及到的知識點有: 1:switch語句(掌握) 2:循環語句(掌握) 3:循環結構(循環嵌套使用) 4:控制跳轉語句(掌握)

============================================================================= ============================================================================= 1:switch語句(掌握) (1)格式:     switch(表達式) {       case 值1:         語句體1;         break;       case 值2:         語句體2;         break;       ......         ......       case 值n:         語句體n;         break;       default:         語句體n+1;         break;   //該break可以省略。     } 格式解釋說明: switch:說明這是switch語句。 表達式:可以是byte,short,int,char。         JDK5以後表達式可以是枚舉。         JDK7以後表達式可以是字符串。 case:後面的值就是要和表達式進行比較的值。 語句體部分:可以是一條或多條語句。 break:表示程序到這裏中斷,跳出switch語句了。 default:如果所有的情況都不匹配,就執行這裏的,相當於if語句中的else。 (2)面試題: switch語句的表達式可以是byte嗎?可以是long嗎?可以是String嗎?       可以,不可以,JDK7以後可以。 (3)執行流程:     A:首先,計算表達式的值;     B:其次,和每一個case的值進行匹配,如果有就執行對應的語句體,看到break就結束。     C:如果沒有匹配,就執行default的語句體n+1。 (4)注意事項: A:case後面只能是常量,不能是變量;而且,多個case後面的值不能出現相同的。 B:default可以省略嗎?       可以省略,但是不建議,因爲它的作用是對不正確的情況給出提示。 特殊情況:         case就可以把值固定(即:判斷的值是固定的)。 例如:做單選題:A,B,C,D只有四個選項。 C:break可以省略嗎?       default後面的break可以省略。但是其餘case後面的break不可以省略,否則出現的結果可能不是我們想要的。 即:會出現一個現象:case穿透。       最終我們建議都不要省略。 D:default一定要在最後嗎?       不是,可以在任意位置。但是建議放在最後。因爲default表示其它的情況。也即:default不是程序結束的標誌。 E:switch語句的兩種結束標誌:       a:遇到break就表示結束了。       b:如果一直沒有遇到break,那就執行到程序的末尾才表示結束了。       特別注意一個情況:如下圖所示01:

(5)案例:     A:鍵盤錄入一個數字(1-7),輸出對應的星期幾。(表達式是byte,int,short的情況)     B:單項選擇題。(表達式是char的情況)       //由於我們現在沒有辦法鍵盤錄入得到一個'A','B','C','D'       //此時需要強制轉換爲字符類型。       Scanner sc = new Scanner(System.in);       int choiceNumber = sc.nextInt();       char choice = (char) choiceNumber;     C:鍵盤錄入一個字符串的問題。(表達式是字符串的情況)       String s = sc.nextLine();     D:根據給定的月份,輸出對應的季節。(可以使用case穿透簡化代碼)  (6)if語句和switch語句各自的使用場景:  A:if語句       針對boolean類型的判斷。       針對一個範圍的判斷。       針對幾個常量的判斷。 B:switch語句       針對幾個常量的判斷。 ----------------------------------------------------------------------------- 2:循環語句(掌握)

(1)有三種:for循環,while循環,do...while循環。 注意:反覆執行這個循環體時,需要在合適的時候把循環判斷條件修改爲false,從而結束循環。 --------------------------------------- (2)for循環語句 A:格式:       for(初始化語句;判斷條件語句;控制條件語句) {         循環體語句;       } 執行流程: a:執行初始化語句(只做一次); b:執行判斷條件語句;           如果這裏是true,就繼續。           如果這裏是false,循環就結束。  c:執行循環體語句; d:執行控制條件語句; e:回到b繼續。 B:注意事項: a:判斷條件語句無論是簡單還是複雜,結果都是boolean類型。 b:循環體語句如果是一條,可以省略大括號,但是不建議省略。 c:一般來說:有分號就沒有左大括號,有左大括號就沒有分號。 C:案例: a:輸出10次HelloWorld。 b:輸出1-10的數據。 c:輸出10-1的數據。 d:求1-10的和。(循環的求和思想) 如下圖所示02:

e:求1-100的和,求1-100的偶數和,求1-100的奇數和。 f:求5的階乘。         n! = n * (n - 1)!         n! = n * (n - 1) *(n -2) * (n - 3) * ... * 3 * 2 * 1 g:在控制檯打印水仙花數。 何爲水仙花數?答:一個三位數,其各位數字的立方和等於該數本身。         ge:    153/1%10 = 3         shi:   153/10%10 = 5         bai:   153/100%10 = 1         qian:  x/10000%10         wan:  x/10000%10         ...... 小結:    如果想把某數的個位取出來,就用該數除以1取整後再對10取餘;             如果想把某數的十位取出來,就用該數除以10取整後再對10取餘;             如果想把某數的百位取出來,就用該數除以100取整後再對10取餘;         其餘位以此類推。 h:統計水仙花個數。         循環的統計思想。 i:改進版的迴文數。         一個五位數:12621         個位 = 萬位         十位 = 千位         個位 + 十位 + 千位 + 萬位 = 百位 j:統計1-1000之間同時滿足如下條件的數據有多少個。         x%3==2         x%5==3         x%7==2 --------------------------------------- (3)while循環 A:基本格式:       while(判斷條件語句) {         循環體語句;       }       --------------------------------------- 擴展格式:       初始化語句;       while(判斷條件語句) {         循環體語句;         控制條件語句;       }       ---------------------------------------       for(初始化語句;判斷條件語句;控制條件語句) {         循環體語句;       }       --------------------------------------- 通過查看這個格式,我們就知道while循環可以和for循環等價轉換。 B:while的練習:       把for語句的練習用while改進。  C:for和while的區別: a:使用上的區別:         如果想在循環結束後,繼續使用控制條件語句所控制的那個變量,用while循環,否則用for循環。不知道的時候用for循環。         因爲變量要及早的從內存中消失,可以提高內存的使用效率。  b:理解上的區別:         for適合於一個範圍內的判斷。         while適合次數不明確的判斷。 舉例:吃葡萄。 D:案例: a:珠穆朗瑪峯問題。(不知道次數用while) b:小芳存錢問題(break以後才能做)。 --------------------------------------- (4)do...while循環 A:基本格式:       do {         循環體語句;       }while(判斷條件語句);       --------------------------------------- 擴展格式:       初始化語句;       do {         循環體語句;         控制條件語句;       }while(判斷條件語句);       ---------------------------------------       for(初始化語句;判斷條件語句;控制條件語句) {         循環體語句;       }       ---------------------------------------       通過查看格式,我們就可以看出其實三種循環的格式可以是統一的。 B:三種循環的區別: a:do...while循環至少執行一次循環體。  b:for和while必須先判斷條件是否是true,然後才能決定是否執行循環體。 c:我們一般優先考慮for,其次考慮while,最後考慮do...while。 --------------------------------------- (5)循環使用的注意事項(死循環) A:一定要注意修改控制條件語句,否則容易出現死循環。 B:最簡單的死循環格式:       a:while(true){...}       b:for(;;){...} ----------------------------------------------------------------------------- 3:循環結構(循環嵌套使用) 循環嵌套:循環語句的循環體本身就是一個循環語句。 (1)請輸出一個4行5列的星星(*)圖案.     *****     *****     *****     *****     for (int x = 0; x < 4; x++) { //外循環控制行數。       for (int y = 0; y < 5; y++) { //內循環控制列數。         System.out.print("*");       }       System.out.println();     }  (2)請輸出如下圖形.     *     **     ***     ****     *****   for (int x = 0; x < 5; x++) { //外循環控制行數。     for (int y = 0; y <= x; y++) { //內循環控制列數。       System.out.print("*");     }     System.out.println();   } (3)在控制檯輸出九九乘法表。     *     **     ***     ****     *****     ******     *******     ********     *********     for (int x = 0; x < 9; x++) { //外循環控制行數。       for (int y = 0; y <= x; y++) { //內循環控制列數。         System.out.print("*");       }       System.out.println();     } ---------------------------------------     1*1=1     1*2=2   2*2=4     1*3=3   2*3=6   3*3=9     1*4=4   2*4=8   3*4=12   4*4=16     ... ... ... ... ...     1*9=9   2*9=18    3*9=27   4*9=36 ...     for (int x = 1; x <= 9; x++) { //外循環控制行數。       for (int y = 1; y <= x; y++) { //內循環控制列數。         System.out.print(y+"*"+x+"="+y*x+"\t");       }       System.out.println();     } (4)注意事項:     '\x'    x表示任意,這種做法叫轉移字符。     '\t'    tab鍵的位置     '\r'   回車(回到舊行的開端)     '\n'     換行(換到新行的開端) ----------------------------------------------------------------------------- 4:控制跳轉語句(掌握) (1)break:中斷的意思 A:用在循環(loop)語句中加入了if判斷的情況和switch語句中,離開此應用場景無意義。 B:作用: a:跳出單層循環。 b:跳出多層循環,需要與標籤語句的配合。即給循環起個名字。但是呢,幾乎不用,跳出多層循環。應用:break配合標籤使用,可以通過內循環控制外循環。 格式:標籤名:語句 例如:         wc:for(int x = 0; x < 3; x++) {           nc:for(int y = 0; y < 4; y++) {             if(y == 2) {               //break nc;               break wc;             }             System.out.print("*");           }           System.out.println();         } --------------------------------------- (2)continue:繼續的意思 A:用在循環中,離開此應用場景無意義。 B:作用:       break:跳出單層循環,循環結束,不在繼續下去了。       continue:跳出一次單層循環,但循環沒有結束,繼續下一次循環。特別注意:在while循環的循環體中使用continue,可能使程序停不下來。 C:填空題 (1)     for(int x = 1; x < 10; x++) {       if(x == 3) {         //break;   //1 2         continue;     //1 2 4 5 6 7 8 9       }       System.out.println(x);     } (2)     for(int x = 1; x <= 10; x++) {       if(x%3 == 0) {         //在此處填寫代碼       }       System.out.println(“Java基礎班”);     } 如何讓控制檯輸出2次:Java基礎班       break; 如何讓控制檯輸出7次:Java基礎班       continue; 如何讓控制檯輸出13次:Java基礎班       System.out.println(“Java基礎班”); --------------------------------------- (3)return:返回的意思     return關鍵字不是爲了跳轉出循環體,更常用的功能是結束一個方法,也就是退出一個方法。 A:用於結束方法的,後面還會在繼續講解和使用。 B:一旦遇到return,程序就不會在繼續往後執行。 --------------------------------------- (4)用while語句和break結合使用:小芳存錢案例。

 1 /*
 2     需求:小芳的媽媽每天給她2.5元錢,她都會存起來,但是,
 3         每當這一天是存錢的第5天或者5的倍數的話,她都會花去6元錢,
 4         請問,經過多少天,小芳纔可以存到100元錢。
 5     分析:
 6         A:小芳的媽媽每天給她2.5元錢。
 7             double dayMoney = 2.5;
 8         B:她都會存起來
 9             double daySum = 0;
10         C:從第一天開始存儲。
11             int dayCount = 1;
12         D:經過多少天,小芳纔可以存到100元錢。
13             double result = 100;
14         E:這一天是存錢的第5天或者5的倍數的話,她都會花去6元錢,
15             說明要判斷dayCount的值,如果對5整除就減去6元錢。
16                 daySum -= 6;
17             由此還隱含了一個問題,就是要判斷dayCount的值,如果不是5的倍數天的話,錢要累加。
18                 daySum += dayMoney;
19         F:因爲不知道是多少天,所以我用死循環,一旦超過100元我就退出循環。
20 */
21 class WhileDemo {
22     public static void main(String[] args) {
23         //每天要存儲的錢是2.5元
24         double dayMoney = 2.5;
25             
26         //存錢的初始化值是0
27         double daySum = 0;
28             
29         //從第一天開始存儲
30         int dayCount = 1;
31             
32         //最終存儲不小於100就不存儲了
33         int result = 100;
34             
35         //因爲不知道是多少天,所以我用死循環,
36         while(true) {
37             //累加錢
38             daySum += dayMoney;
39                 
40             //一旦超過100元我就退出循環。
41             if(daySum >= result) {
42                 System.out.println("共花了"+dayCount+"天存儲了100元");
43                 break;
44             }
45                 
46             if(dayCount%5 == 0) {
47                 //花去6元錢
48                 daySum -= 6;
49                 System.out.println("第"+dayCount+"天花了6元錢");
50             }
51                 
52             //天數變化
53             dayCount++;
54         }
55     }
56 }    

=============================================================================

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章