switch&循環語句


1.switch語句

1.1switch語句結構(掌握)

  • 格式
switch (表達式) {
	case 1:
		語句體1;
		break;
	case 2:
		語句體2;
		break;
	...
	default:
		語句體n+1;
		break;
}
  • 執行流程:

    首先計算出表達式的值
    其次,和case依次比較,一旦有對應的值,就會執行相應的語句,在執行的過程中,遇到break就會結
    束。
    最后,如果所有的case都和表達式的值不匹配,就會執行default語句體部分,然后程序結束掉。

1.2Switch語句練習-春夏秋冬(應用)

  • 需求:一年有12個月,分屬於春夏秋冬4個季節,鍵盤錄入一個月份,請用程序實現判斷該月份屬於哪個季
    節,並輸出。
  • 運行結果:
春:3、4、5
夏:6、7、8
秋:9、10、11
冬:1、2、12
  • 示例代碼:
import java.util.Scanner;
public class Demo1{
	public static void main(String[] args){
		//創建Scanner對象
		Scanner sc =  new Scanner(System.in);
		System.out.println("請輸入一個月份:");
		int month = sc.nextInt();
		//case穿透
		switch(month){
			case 1 :
			case 2 :
			case 12 : System.out.println("冬季");
			break;
			case 3 :
			case 4 :
			case 5 : System.out.println("春季");
			break;
			case 6 :
			case 7 :
			case 8 : System.out.println("夏季");
			break;
			case 9 :
			case 10 :
			case 11 : System.out.println("秋季");
			break;
			default:System.out.println("你輸入的月份有誤!");
		}
	}
}
  • 注意:如果switch中得case,沒有對應break的話,則會出現case穿透的現象。

2.for循環

2.1for循環結構(掌握)

  • 循環:

    循環語句可以在滿足循環條件的情況下,反復執行某一段代碼,這段被重復執行的代碼被稱為循環體語句,
    當反復執行這個循環體時,需要在合適的時候把循環判斷條件修改為false,從而結束循環,否則循環將一直
    執行下去,形成死循環。

  • for循環格式:

for (初始化語句;條件判斷語句;條件控制語句) {
	循環體語句;
}
  • 格式解釋:

    • 初始化語句: 用於表示循環開啟時的起始狀態,簡單說就是循環開始的時候什么樣
    • 條件判斷語句:用於表示循環反復執行的條件,簡單說就是判斷循環是否能一直執行下去
    • 循環體語句: 用於表示循環反復執行的內容,簡單說就是循環反復執行的事情
    • 條件控制語句:用於表示循環執行中每次變化的內容,簡單說就是控制循環是否能執行下去
  • 執行流程:

    ①執行初始化語句

    ②執行條件判斷語句,看其結果是true還是false
    如果是false,循環結束
    如果是true,繼續執行
    ③執行循環體語句
    ④執行條件控制語句
    ⑤回到②繼續

2.2for循環練習-輸出數據(應用)

  • 需求:在控制台輸出1-5和5-1的數據
  • 示例代碼:
public class ForTest01 {
	public static void main(String[] args) {
		//需求:輸出數據1-5
		for(int i=1; i<=5; i++) {
		System.out.println(i);
		}
		System.out.println("--------");
		//需求:輸出數據5-1
		for(int i=5; i>=1; i--) {
		System.out.println(i);
		}
	}
}

2.3for循環練習-求和(應用)

  • 需求:求1-5之間的數據和,並把求和結果在控制台輸出

  • 示例代碼:

public class ForTest02 {
	public static void main(String[] args) {
        //求和的最終結果必須保存起來,需要定義一個變量,用於保存求和的結果,初始值為0
        int sum = 0;
        //從1開始到5結束的數據,使用循環結構完成
        for(int i=1; i<=5; i++) {
        //將反復進行的事情寫入循環結構內部
        // 此處反復進行的事情是將數據 i 加到用於保存最終求和的變量 sum 中
        sum += i;
        /*
        sum += i; sum = sum + i;
        第一次:sum = sum + i = 0 + 1 = 1;
        第二次:sum = sum + i = 1 + 2 = 3;
        第三次:sum = sum + i = 3 + 3 = 6;
        第四次:sum = sum + i = 6 + 4 = 10;
        第五次:sum = sum + i = 10 + 5 = 15;
        */
    	}
        //當循環執行完畢時,將最終數據打印出來
		System.out.println("1-5之間的數據和是:" + sum);
	}
}
  • 本題要點:
    • 今后遇到的需求中,如果帶有求和二字,請立即聯想到求和變量
    • 求和變量的定義位置,必須在循環外部,如果在循環內部則計算出的數據將是錯誤的

2.4for循環練習-求偶數和(應用)

  • 需求:求1-100之間的偶數和,並把求和結果在控制台輸出 }
  • 示例代碼:
public class ForTest03 {
	public static void main(String[] args) {
		//求和的最終結果必須保存起來,需要定義一個變量,用於保存求和的結果,初始值為0
    	int sum = 0;
    	//對1-100的數據求和與1-5的數據求和幾乎完全一樣,僅僅是結束條件不同
    	for(int i=1; i<=100; i++) {
    	//對1-100的偶數求和,需要對求和操作添加限制條件,判斷是否是偶數
    		if(i%2 == 0) {
   	 		sum += i;
   	 		}
    	}
    	//當循環執行完畢時,將最終數據打印出來
    	System.out.println("1-100之間的偶數和是:" + sum);
    }
}

2.5for循環練習-水仙花(應用)

  • 需求:在控制台輸出所有的“水仙花數”
  • 解釋:什么是水仙花數?
    • 水仙花數,指的是一個三位數,個位、十位、百位的數字立方和等於原數
      • 例如
				153 3*3*3 + 5*5*5 + 1*1*1 = 153
  • 思路:

    1. 獲取所有的三位數,准備進行篩選,最小的三位數為100,最大的三位數為999,使用for循環獲取
    2. 獲取每一個三位數的個位,十位,百位,做if語句判斷是否是水仙花數
  • 示例代碼

public class ForTest04 {
	public static void main(String[] args) {
        //輸出所有的水仙花數必然要使用到循環,遍歷所有的三位數,三位數從100開始,到999結束
        for(int i=100; i<1000; i++) {
        	//在計算之前獲取三位數中每個位上的值
        	int ge = i%10;
            int shi = i/10%10;
            int bai = i/10/10%10;
            //判定條件是將三位數中的每個數值取出來,計算立方和后與原始數字比較是否相等
            if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i) {
            //輸出滿足條件的數字就是水仙花數
            System.out.println(i);
			}
		}
	}
}

2.6for循環練習-統計水仙花數個數(應用)

  • 需求:統計“水仙花數”一共有多少個,並在控制台輸出個數
  • 示例代碼:
public class ForTest05 {
    public static void main(String[] args) {
        //定義變量count,用於保存“水仙花數”的數量,初始值為0
        int count = 0;
        //輸出所有的水仙花數必然要使用到循環,遍歷所有的三位數,三位數從100開始,到999結束
        for(int i=100; i<1000; i++) {
        //在計算之前獲取三位數中每個位上的值
        int ge = i%10;
        int shi = i/10%10;
        int bai = i/10/10%10;
        //在判定水仙花數的過程中,滿足條件不再輸出,更改為修改count的值,使count+1
        if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i) {
        	count++;
        	}
        }
        //打印輸出最終結果
        System.out.println("水仙花共有:" + count + "個");
	}
}
  • 本題要點:
    • 今后如果需求帶有統計xxx,請先想到計數器變量
    • 計數器變量定義的位置,必須在循環外部

3.while循環

3.1while結構(掌握)

  • while循環完整格式:
初始化語句;
while (條件判斷語句) {
    循環體語句;
    條件控制語句;
}
  • while循環執行流程:

    ①執行初始化語句
    ②執行條件判斷語句,看其結果是true還是false
    如果是false,循環結束
    如果是true,繼續執行
    ③執行循環體語句
    ④執行條件控制語句
    ⑤回到②繼續

  • 示例代碼:

public class WhileDemo {
    public static void main(String[] args) {
        //需求:在控制台輸出5次"HelloWorld"
        //for循環實現
        for(int i=1; i<=5; i++) {
        System.out.println("HelloWorld");
        }
        System.out.println("--------");
        //while循環實現
        int j = 1;
        while(j<=5) {
            System.out.println("HelloWorld");
            j++;
		}
	}
}

3.2while循環練習-珠穆朗瑪峰(應用)

  • 需求:世界最高山峰是珠穆朗瑪峰(8844.43米=8844430毫米),假如我有一張足夠大的紙,它的厚度是0.1毫
    米。請問,我折疊多少次,可以折成珠穆朗瑪峰的高度?
  • 示例代碼:
public class WhileTest {
    public static void main(String[] args) {
        //定義一個計數器,初始值為0
        int count = 0;
        //定義紙張厚度
        double paper = 0.1;
        //定義珠穆朗瑪峰的高度
        int zf = 8844430;
        //因為要反復折疊,所以要使用循環,但是不知道折疊多少次,這種情況下更適合使用while循環
        //折疊的過程中當紙張厚度大於珠峰就停止了,因此繼續執行的要求是紙張厚度小於珠峰高度
        while(paper <= zf) {
            //循環的執行過程中每次紙張折疊,紙張的厚度要加倍
            paper *= 2;
            //在循環中執行累加,對應折疊了多少次
            count++;
        }
        //打印計數器的值
        System.out.println("需要折疊:" + count + "次");
	}
}

4.循環細節

4.1do...while循環結構(掌握)

  • 完整格式:
初始化語句;
do {
    循環體語句;
    條件控制語句;
}while(條件判斷語句);
  • 執行流程:

    ① 執行初始化語句
    ② 執行循環體語句
    ③ 執行條件控制語句
    ④ 執行條件判斷語句,看其結果是true還是false
    如果是false,循環結束
    如果是true,繼續執行
    ⑤ 回到②繼續

  • 示例代碼:

public class DoWhileDemo {
    public static void main(String[] args) {
        //需求:在控制台輸出5次"HelloWorld"
        //for循環實現
        for(int i=1; i<=5; i++) {
        	System.out.println("HelloWorld");
        }
        System.out.println("--------");
        //do...while循環實現
        int j = 1;
        do {
            System.out.println("HelloWorld");
            j++;
    	}while(j<=5);
	}
}

4.2三種循環的區別(理解)

  • 三種循環的區別

    • for循環和while循環先判斷條件是否成立,然后決定是否執行循環體(先判斷后執行)
    • do...while循環先執行一次循環體,然后判斷條件是否成立,是否繼續執行循環體(先執行后判斷)
  • for循環和while的區別

    • 條件控制語句所控制的自增變量,因為歸屬for循環的語法結構中,在for循環結束后,就不能再次被訪
      問到了
    • 條件控制語句所控制的自增變量,對於while循環來說不歸屬其語法結構中,在while循環結束后,該變
      量還可以繼續使用
  • 死循環(無限循環)的三種格式

    1. for(;;) {}
    2. while(true){}
    3. do {} while(true);

4.3跳轉控制語句(掌握)

  • 跳轉控制語句(break)

    • 跳出循環,結束循環
  • 跳轉控制語句(continue)

    • 跳過本次循環,繼續下次循環
  • 注意: continue只能在循環中進行使用!

4.4 循環嵌套(理解)

  • 循環嵌套概述:在循環中,繼續定義循環
  • 示例代碼:
public static void main(String[] args) {
    //外循環控制小時的范圍,內循環控制分鍾的范圍
        for (int hour = 0; hour < 24; hour++) {
            for (int minute = 0; minute < 60; minute++) {
            System.out.println(hour + "時" + minute + "分");
        }
        System.out.println("--------");
    }
}
  • 理解:

    • 請反復理解這句話(整個內循環,就是外循環的一個循環體,內部循環體沒有執行完畢,外循環是不會
      繼續向下執行的)
  • 結論:

    • 外循環執行一次,內循環執行一圈

5.Random

5.1Random產生隨機數(掌握)

  • 概述:

    • Random類似Scanner,也是Java提供好的API,內部提供了產生隨機數的功能
  • 使用步驟:

    1. 導入包
      import java.util.Random;
    2. 創建對象
      Random r = new Random();
    3. 產生隨機數
      int num = r.nextInt(10);
      解釋:10代表的是一個范圍,如果括號寫10,產生的隨機數就是0-9,括號寫20,參數的隨機數則是0-19
  • 示例代碼:

import java.util.Random;
public class RandomDemo {
    public static void main(String[] args) {
        //創建對象
        Random r = new Random();
        //用循環獲取10個隨機數
        for(int i=0; i<10; i++) {
            //獲取隨機數
            int number = r.nextInt(10);
            System.out.println("number:" + number);
        }
        //需求:獲取一個1-100之間的隨機數
        int x = r.nextInt(100) + 1;
        System.out.println(x);
	}
}

5.2Random練習-猜數字(應用)

  • 需求:

    程序自動生成一個1-100之間的數字,使用程序實現猜出這個數字是多少?

    當猜錯的時候根據不同情況給出相應的提示
    A. 如果猜的數字比真實數字大,提示你猜的數據大了
    B. 如果猜的數字比真實數字小,提示你猜的數據小了
    C. 如果猜的數字與真實數字相等,提示恭喜你猜中了

  • 示例代碼:

import java.util.Random;
import java.util.Scanner;
public class RandomTest {
    public static void main(String[] args) {
        //要完成猜數字的游戲,首先需要有一個要猜的數字,使用隨機數生成該數字,范圍1到100
        Random r = new Random();
        int number = r.nextInt(100) + 1;
        while(true) {
            //使用程序實現猜數字,每次均要輸入猜測的數字值,需要使用鍵盤錄入實現
            Scanner sc = new Scanner(System.in);
            System.out.println("請輸入你要猜的數字:");
            int guessNumber = sc.nextInt();
            //比較輸入的數字和系統產生的數據,需要使用分支語句。
            //這里使用if..else..if..格式,根據不同情況進行猜測結果顯示
            if(guessNumber > number) {
                System.out.println("你猜的數字" + guessNumber + "大了");
                } else if(guessNumber < number) {
                System.out.println("你猜的數字" + guessNumber + "小了");
                } else {
                System.out.println("恭喜你猜中了");
                break;
			}
		}
	}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM