天天看點

java switch 循環_java基礎:switch語句應用,循環的詳細介紹以及使用,附練習案列

java switch 循環_java基礎:switch語句應用,循環的詳細介紹以及使用,附練習案列

1. switch語句

1.1 分支語句switch語句

格式

switch (表達式) {

case 1:

語句體1;

break;

case 2:

語句體2;

break;

...

default:

語句體n+1;

break;

}

執行流程:

首先計算出表達式的值

其次,和case依次比較,一旦有對應的值,就會執行相應的語句,在執行的過程中,遇到break就會結 束。

最後,如果所有的case都和表達式的值不比對,就會執行default語句體部分,然後程式結束掉。

1.2 switch案例-減肥計劃

需求:鍵盤錄入星期數,顯示今天的減肥活動

周一:跑步

周二:遊泳

周三:慢走

周四:動感單車

周五:拳擊

周六:爬山

周日:好好吃一頓

示例代碼:

public static void main(String[] args){

// 1. 鍵盤錄入星期資料,使用變量接收

Scanner sc = new Scanner(System.in);

System.out.println("請輸入");

int week = sc.nextInt();

// 2. 多情況判斷,采用switch語句實作

switch(week){

// 3. 在不同的case中,輸出對應的減肥計劃

case 1:

System.out.println("跑步");

break;

case 2:

System.out.println("遊泳");

break;

case 3:

System.out.println("慢走");

break;

case 4:

System.out.println("動感單車");

break;

case 5:

System.out.println("拳擊");

break;

case 6:

System.out.println("爬山");

break;

case 7:

System.out.println("好好吃一頓");

break;

default:

System.out.println("您的輸入有誤");

break;

}

}

}

1.3 switch語句case穿透

概述 : 如果switch語句中,case省略了break語句, 就會開始case穿透

需求 : 鍵盤錄入星期數,輸出工作日、休息日 (1-5)工作日,(6-7)休息日

示例代碼:

public static void main(String[] args){

Scanner sc = new Scanner(System.in);

System.out.println("請輸入星期數:");

int week = sc.nextInt();

switch(week){

case 1:

case 2:

case 3:

case 4:

case 5:

System.out.println("工作日");

break;

case 6:

case 7:

System.out.println("休息日");

break;

default:

System.out.println("您的輸入有誤");

break;

}

}}

2. for循環

2.1 循環語句-for循環

循環:

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

for循環格式:

for (初始化語句;條件判斷語句;條件控制語句) {

循環體語句;

}

格式解釋:

初始化語句: 用于表示循環開啟時的起始狀态,簡單說就是循環開始的時候什麼樣

條件判斷語句:用于表示循環反複執行的條件,簡單說就是判斷循環是否能一直執行下去

循環體語句: 用于表示循環反複執行的内容,簡單說就是循環反複執行的事情

條件控制語句:用于表示循環執行中每次變化的内容,簡單說就是控制循環是否能執行下去

執行流程:

①執行初始化語句

②執行條件判斷語句,看其結果是true還是false

如果是false,循環結束

如果是true,繼續執行

③執行循環體語句

④執行條件控制語句

⑤回到②繼續

2.2 for循環案例-輸出資料1-5和5-1

需求:在控制台輸出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.3 for循環案例-求1-5資料和

需求:求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;

}

//當循環執行完畢時,将最終資料列印出來

System.out.println("1-5之間的資料和是:" + sum);

}

}

本題要點:

今後遇到的需求中,如果帶有求和二字,請立即聯想到求和變量

求和變量的定義位置,必須在循環外部,如果在循環内部則計算出的資料将是錯誤的

2.4 for循環案例-求1-100偶數和

需求:求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.5 for循環案例-水仙花數

需求:在控制台輸出所有的“水仙花數”

解釋:什麼是水仙花數?

水仙花數,指的是一個三位數,個位、十位、百位的數字立方和等于原數

例如153 3*3*3 + 5*5*5 + 1*1*1 = 153

思路:

擷取所有的三位數,準備進行篩選,最小的三位數為100,最大的三位數為999,使用for循環擷取

擷取每一個三位數的個位,十位,百位,做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.6 for循環案例-每行列印2個水仙花數(統計)

需求:在控制台輸出所有的“水仙花數”,要求每行列印2個

示例代碼:

public class Demo6For {

public static void main(String[] args){

// 1. 定義變量count,用于儲存“列印過”的數量,初始值為0

int count = 0;

for(int i = 100; i <= 999; 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){

// 2. 在判定和列印水仙花數的過程中,拼接空格, 但不換行,并在列印後讓count變量+1,記錄列印過的數量

System.out.print(i + " ");

count++;

// 3. 在每一次count變量+1後,判斷是否到達了2的倍數,是的話,換行

if(count % 2 == 0){

System.out.println();

}

}

}

}

}

用while循環,列印水仙花數,并分兩行列印

while的 i++放的位置了解:

i++放在循環語句中最前面:

會先進行加一操作,然後在執行其他代碼,也就是會從101開始取值

i++放到循環中其他語句後面:會運作完其他取值及判斷之後在進行加一操作,相當于從100開始進行取值,

i++不可以放到循環的外面;原因:因為java程式是按順序一次執行代碼的

package com.heima.Test03;

public class demo04

public static void main(String[] args) {//1.建立主方法

int coune = 0;//9.定義一個變量,用于記錄控制台列印次數

int i = 100;//2.用while循環擷取所有三位數,定義起始值為100,

System.out.println("水仙花數為:");

while (i < 1000) {//3.循環的最大次數為小于1000,這樣相當于擷取的值為從起始值100-999所有值

int ge = i % 10;//4.求出這個三位數的個位數字;

int shi = i / 10 % 10;//5.求出這個三位數的十位數字;

int bai = i / 10 / 10 % 10;//6.求出這個三位數的百位數字;

if (ge * ge * ge + shi * shi * shi + bai * bai * bai == i) {//7.判斷這個數的是否為水仙花數

System.out.print(i + " ");//8.列印水仙花數,為了達到要求 我們需要不換行列印并且在每次輸出水仙花是時候後面拼接一個空格

coune++;//10.每一次進行列印,我們讓coune進行+1,達到計數效果

if (coune % 2 == 0) {//用if判斷列印是否為兩次//如果列印了兩次進行一次以下操作

System.out.println();//這句話是換行的意思

}

}i++;//每執行完一次循環,讓i進行++操作,直到i+到一千時候循環結束;

}

}

}

本題要點:

今後如果需求帶有統計xxx,請先想到計數器變量

計數器變量定義的位置,必須在循環外部

3. while循環

3.1 循環語句-while循環

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.2 while循環案例-珠穆朗瑪峰

需求:世界最高山峰是珠穆朗瑪峰(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.1 循環語句-dowhile循環

完整格式:

初始化語句;

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循環結束後,該變量還可以繼續使用

死循環(無限循環)的三種格式

for(;;){}

while(true){}

do {} while(true);

4.3 死循環

死循環格式

for死循環格式 :

for(;;){

}

while死循環格式 :

while(true){

}

do..while死循環格式 :

do{

}while(true);

死循環案例

public static void main(String[] args) {

do{

System.out.println("我停不下來了~");}while(true);

System.out.println("看看我能被執行嗎?~");// 無法通路的語句

}

}

4.4 跳轉控制語句

跳轉控制語句(break)

跳出循環,結束循環

跳轉控制語句(continue)

跳過本次循環,繼續下次循環

注意: continue隻能在循環中進行使用!

public class Demo1Continue {

public static void main(String[] args){

for(int i = 1; i <= 24; i++){

if(i == 4){

continue;

}

System.out.println(i + "層到了~");

}

}

}

public class Demo2Break {

public static void main(String[] args){

for(int i = 20; i <= 80; i++){

if(i == 60){

break;// 結束整個循環

}

System.out.println(i + "歲正在上班");

}

}

}

import java.util.Scanner;

public class Test {

public static void main (String[] args){

lo:while(true){

System.out.println("請輸入您要檢視的星期數:");

System.out.println("(如無需繼續檢視,請輸入0退出程式)");

// 1. 鍵盤錄入星期資料,使用變量接收

Scanner sc = new Scanner(System.in);

int week = sc.nextInt();

// 2. 多情況判斷,采用switch語句實作

switch(week){

// 3. 在不同的case中,輸出對應的減肥計劃

case 0:

System.out.println("感謝您的使用");

break lo;

case 1:

System.out.println("跑步");

break;

case 2:

System.out.println("遊泳");

break;

case 3:

System.out.println("慢走");

break;

case 4:

System.out.println("動感單車");

break;