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)休息日

  • 示例代碼:

/*
case穿透是如何產生的?

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

現象:
當開始case穿透,后續的case就不會具有匹配效果,內部的語句都會執行
直到看見break,或者將整體switch語句執行完畢,才會結束。
*/
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;
/*
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.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

  • 思路:

    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.6 for循環案例-每行打印2個水仙花數(統計)

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

  • 示例代碼:

public class Demo6For {
/*
需求:在控制台輸出所有的“水仙花數”,要求每行打印2個

System.out.print (打印內容); 打印后不換行
System.out.println(打印內容); 打印后換行

分析:

1. 定義變量count,用於保存“打印過”的數量,初始值為0
2. 在判定和打印水仙花數的過程中,拼接空格, 但不換行,並在打印后讓count變量+1,記錄打印過的數量
3. 在每一次count變量+1后,判斷是否到達了2的倍數,是的話,換行。

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

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

    1. for(;;){}

    2. while(true){}

    3. do {} while(true);

4.3 死循環

  • 死循環格式

    for死循環格式 :
    for(;;){

    }

    while死循環格式 :

    while(true){

    }

    do..while死循環格式 :

    do{

    }while(true);
  • 死循環案例

/*
問題: 死循環有應用場景嗎?

例如: 鍵盤錄入一個1-100之間的整數

顧慮: 鍵盤錄入是用戶操作的, 用戶就可能會出現一些誤操作的現象

*/
public static void main(String[] args) {
   /*
for(;;){
System.out.println("我停不下來了~");
}
*/

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

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

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

 

4.4 跳轉控制語句

  • 跳轉控制語句(break)

    • 跳出循環,結束循環

  • 跳轉控制語句(continue)

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

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

public class Demo1Continue {
/*
continue : 跳過某次循環體內容的執行

注意:使用是基於條件控制, 在循環內部使用.

需求: 模擬電梯上行的過程 1-24層, 4層不停.
*/
public static void main(String[] args){
for(int i = 1; i <= 24; i++){
if(i == 4){
continue;
}
System.out.println(i + "層到了~");
}
}

}
public class Demo2Break {
/*
break : 終止循環體內容的執行
注意:使用是基於條件控制的
break語句只能在循環和switch中進行使用.

需求: 模擬20歲工作到80歲, 60歲退休.
*/
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 {
/*
需求:程序運行后,用戶可多次查詢星期對應的減肥計划,直到輸入0,程序結束

步驟:

1. 不明確用戶操作幾次, 使用死循環包裹業務邏輯
2. 匹配到0的時候,使用break結束循環死循環

*/
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;
case 5:
System.out.println("拳擊");
break;
case 6:
System.out.println("爬山");
break;
case 7:
System.out.println("好好吃一頓");
break;
default:
System.out.println("您的輸入有誤");
break;
}
}


}
}

 

5. Random

5.1 Random產生隨機數(掌握)

  • 概述:

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

      • API后續課程詳細講解,現在可以簡單理解為Java已經寫好的代碼

  • 使用步驟:

    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 Demo1Random {
/*
Random : 產生隨機數

1. 導包 : import java.util.Random;
   導包的動作必須出現在類定義的上面

2. 創建對象 : Random r = new Random();
上面這個格式里面,r 是變量名,可以變,其他的都不允許變

3. 獲取隨機數 : int number = r.nextInt(10); //獲取數據的范圍:[0,10) 包括0,不包括10
上面這個格式里面,number是變量名,可以變,數字10可以變。其他的都不允許變

需求: 產生隨機數1-10之間的
*/
public static void main(String[] args){
// 2. 創建對象
Random r = new Random();

for(int i = 1; i <= 10; i++){
// 3. 獲取隨機數
int num = r.nextInt(10) + 1; // 1-10
System.out.println(num);
}



}
}
 

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

  • 需求:

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

    當猜錯的時候根據不同情況給出相應的提示

    A. 如果猜的數字比真實數字大,提示你猜的數據大了

    B. 如果猜的數字比真實數字小,提示你猜的數據小了

    C. 如果猜的數字與真實數字相等,提示恭喜你猜中了

  • 示例代碼:

import java.util.Scanner;
import java.util.Random;

public class Test {
/*
需求:程序自動生成一個1-100之間的數字,使用程序實現猜出這個數字是多少?
當猜錯的時候根據不同情況給出相應的提示
如果猜的數字比真實數字大,提示你猜的數據大了
如果猜的數字比真實數字小,提示你猜的數據小了
如果猜的數字與真實數字相等,提示恭喜你猜中了

1. 准備Random和Scanner對象, 分別用於產生隨機數和鍵盤錄入
2. 使用Random產生一個1-100之間的數, 作為要猜的數
3. 鍵盤錄入用戶猜的的數據
4. 使用錄入的數據(用戶猜的數據)和隨機數(要猜的數據)進行比較, 並給出提示

5. 以上內容需要多次進行, 但無法預估用戶輸入幾次可以猜測正確, 使用while(true)死循環包裹
6. 猜對之后, break結束.

*/
public static void main(String[] args){
// 1. 准備Random和Scanner對象, 分別用於產生隨機數和鍵盤錄入
Random r = new Random();
Scanner sc = new Scanner(System.in);
// 2. 使用Random產生一個1-100之間的數, 作為要猜的數
int randomNum = r.nextInt(100) + 1;

// 5. 以上內容需要多次進行, 但無法預估用戶輸入幾次可以猜測正確, 使用while(true)死循環包裹
while(true){
// 3. 鍵盤錄入用戶猜的的數據
System.out.println("請輸入您猜的數據:");
int num = sc.nextInt();
// 4. 使用錄入的數據(用戶猜的數據)和隨機數(要猜的數據)進行比較, 並給出提示
if(num > randomNum){
System.out.println("猜大了");
}else if(num < randomNum){
System.out.println("猜小了");
}else{
// 6. 猜對之后, break結束.
System.out.println("恭喜,猜中了");
break;
}
}

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

}
}


 

day03課后練習題

代碼題

1.訓練案例

1.訓練描述

某商場實行新的抽獎規則:如果會員號(四位數)的百位數字等於產生的隨機數字(隨機數為0~9),則該會員為幸運會員,且實現以下要求:

從鍵盤上接收會員號,使用if-else選擇結構實現幸運抽獎

1.輸入四位數a接

2.產生隨機數b=r.nextint(10)

3.求出a的百位數四位數/100%10命名為bai

判段if bai==b; sout a是幸運 else 不是幸運

2.操作步驟描述

  1. 產生隨機數

  2. 從控制台接收一個4位會員號

  3. 分解獲得的百位數字

  4. 判斷該會員是否是幸運會員

 

按照格式打印

(1)是會員,打印 ”幸運會員:“+會員號

(2)不是幸運會員,打印 “很遺憾,您不是幸運會員”

3.代碼實現:

 

package com.heima.meiri.day3;

import java.util.Random;
import java.util.Scanner;

public class mrb1 {
   public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       Random r = new Random();
       int num_2 = r.nextInt(10);
       System.out.println(num_2);
       System.out.print("請輸入你的四位數會員號:");
       int num_1 = sc.nextInt();
       int bai = num_1 / 100 % 10;
       if (num_1 < 10000 && num_1 >= 100) {
           if (bai == num_2) {
               System.out.println(num_1 + "是幸運觀眾");
          } else {
               System.out.println(num_1 + "不是幸運觀眾");
          }
      } else {
           System.out.println("您的輸入有誤!");
      }
  }
}

運行效果:

2.訓練案例

1.訓練描述

在中國歷法中有十二生肖年份,2019年是己亥豬年,請在控制台輸出從1949年(包含)到2019年(包含)中所有是豬年的年份。

2.操作步驟描述

  1. 定義for循環,1949到2019的年份是循環次數。for(int i = 1949;i<=2019;i++){}

  2. 對每個年份逐個判斷,如果年份和2019的差值是12的倍數,說明這年是豬年。if(2019-i)%12==0{

    sout(i);

    }

  3. 打印符合條件的年份。

3.代碼實現:

 

package com.heima.meiri.day3;

public class mrb2 {
public static void main(String[] args) {
for (int i=1949;i<=2019;i++){
if ((2019-i)%12==0){
System.out.println(i+"年為豬年");
}
}
}
}

運行效果:

 

 

 

day03課后擴展作業題

選擇題

1.for循環格式如下:

for(表達式1;表達式2;表達式3){  

//code 

} 

下面描述正確的是( B ) 

A.  表達式1處的代碼會被執行多次  

B.  表達式1處可以定義變量 

C.  表達式3用於決定循環是否應該結束  

D.  表達式2的值可以是任意類型,也可以是boolean類型 

2.下面的代碼段執行之后count的值是什么( D )  

int count = 1;  

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

count += i;  // count = count + i;

}  

System.out.println(count); //1+1+2+3+4+5

A、5   

B、1   

C、15    

D、16

3.下列語句序列執行后,i的值是 ( D )  

int i=16;    

do { 

i /= 2; //8..4..2

} while( i > 3 );   

A、16     

B、8     

C、4     

D、2 

4.while循環和 do…while循環的區別是 ( C )  

A、沒有區別,這兩個結構任何情況下效果一樣  

B、while循環比 do…while循環執行效率高  

C、do…while循環是先循環后判斷,所以循環體至少被執行一次

D、while循環是先循環后判斷,所以循環體至少被執行一次   

5.以下由 for 語句構成的循環執行的次數是  ( B )   

for ( int i = 0; true; i++)  

A、有語法錯,不能執行 

B、無限次  

C、執行1次 

D、一次也不執行 

6:下列程序的運行結果是 (D)

public static void main(String [] args){

       int i = 1;

       while(i <= 10){

           i++;

           if(i % 2 == 0) {

              System.out.println("HelloWorld");

          }
    }
}

A: 輸出1次HelloWorld

B: 輸出2次HelloWorld

C: 輸出4次HelloWorld

D: 輸出5次HelloWorld

7:下列關於continue和break的描述正確的是(A)

A: continue只能用於循環體中

B: break只能用於循環體中

C: continue只能用於switch語句體中

D: break只能用於switch語句塊中

8:分析以下代碼片段,並按照下列兩個問題在橫線處補全代碼,下列選項正確的是(A)

public class Test01 {

      public static void main(String[] args) {

              for(int x=1; x<=10; x++) {//1 2 3 4 5 6 7 8 9 10

                   if(x % 3==0) {

                     // 補全代碼

                           __________

                  }

                   System.out.println("我愛Java!");

              }

      }

}

問題:

① 在控制台輸出2次:"我愛Java!" 橫線處應該填寫什么?

 

② 在控制台輸出7次:"我愛Java!" 橫線處應該填寫什么?

 

 

A: ①continue

②break

 

B: ①continue

②continue

 

C: ①break

②continue

 

D: ①break

②break

9:下列代碼的運行結果是(B)

public static void main(String[] args) {

   int count = 0;

  for(int i = 1;i <= 10;i++) {//1 2 3 4 5 6 7 8 9 10

          if(i % 5 == 0) {//1 2 3 4

               break;
          }

          if (i == 3 || i == 7 || i == 9){//1 2 4

              continue;

          }

         count++;
  }
   System.out.println(count);
}

A: 4

B: 3

C: 2

D: 1

10:下列代碼能夠用於隨機產生[1,99]包含1,包含99之間整數的是( B )

A:

public static void main(String[] args) {

   Random r = new Random();
   int num = r.nextInt(40)+59;
   System.out.println(num);

}        

 

B:

public static void main(String[] args) {

   Random r = new Random();
   int num = r.nextInt(99) + 1;
   System.out.println(num);

}

 

C:

public static void main(String[] args) {

   Random r = new Random();
   int num = r.nextInt(99);
   System.out.println(num);

}

 

D:

public static void main(String[] args) {

   Random r = new Random();
   int num = r.nextInt(100)-1;
   System.out.println(num);

}

代碼題

1.訓練案例1

需求:

假如某店鋪搞推銷活動,對前100個進店消費的客戶都下發一個號碼牌(1--100號),如果用戶手中的號碼牌是8的倍數,那么該客戶就可以以號碼牌數字的價格購買電風扇一台(例如8號客戶8元即可購買,16號客戶16元即可購買...以此類推),如果該商場今天剛好來了100個客戶,請問該店鋪今天一共賣出了多少台打折的風扇,這些打折的風扇總共賣了多少錢?

 
        

思路提示:

本題實際上是一個范圍求和的題目,只需要使用循環語句,確定循環的范圍(1--100),然后再對這些數字進行判斷,如果數字是8的倍數,則累加求和即可;

運行效果:

該店鋪一共賣了:12台打折的風扇!,這些打折風扇總共賣了:624元錢!

代碼實現:

package com.heima.meiri.day3;

public class kz {
   public static void main(String[] args) {
       int sum=0;
       int count=0;
       for (int i=1;i<100;i++){
           if (i%8==0){
               System.out.println("幸運客戶為:"+i);//該語句用於查看幸運觀眾;
               sum+=i;
               count++;
          }

      }
       System.out.print("該店鋪一共賣出了"+count+"台打折的風扇!");
       System.out.println("這些打折風扇共賣了"+sum+"元錢");

  }
}

2.訓練案例2

需求:

循環錄入某學生的5門課程的成績並計算平均分。如果某分數錄入為負,則停止錄入並提示錄入錯誤。

思路提示:

  1. 創建鍵盤錄入對象

  2. 定義int類型的變量sum(總分)和avg(平均分),兩個變量的初始值位0

  3. 定義boolean類型的變量flag(表示該學生的5門成績是否正確錄入,如果有負值,則將flag修改為true,表示錄入錯誤),初始值為false

  4. 利用for循環,錄入5個成績

    (1)判斷當前的成績如果小於0,flag賦值為true,終止for循環

    (2)否則,如果當前錄入的成績>=0,累加求和

  5. 打印結果

(1)如果flag為true,打印錄入錯誤

(2)否則如果flag為false,打印總分和平均分

代碼實現:

方式一:
package com.heima.meiri.day3;

import java.util.Scanner;

public class kz2 {
   public static void main(String[] args) {
       int sum = 0;
       int avg = 0;
       Scanner sc = new Scanner(System.in);
       for (int i = 1; i <= 5; i++) {
           System.out.println("請輸入你的第" + i + "門成績");
           int a = sc.nextInt();
           if (a <= 100 && a >= 0) {
               sum += a;//求出五門成績的總和;
          } else {
               System.out.println("你的輸入有誤!請重新輸入!");
               i--;
          }

      }
       avg = sum / 5;
       System.out.println("總分:"+sum);
       System.out.println("平均分:"+avg);
  }
}

運行效果:



方式二:

import java.util.Scanner;

public class ZuoYe2 {
public static void main(String[] args) {
//1. 創建鍵盤錄入對象
Scanner sc = new Scanner(System.in);

//2. 定義int類型的變量sum(總分)和avg(平均分),兩個變量的初始值位0
int sum=0,avg=0;

//3. 定義boolean類型的變量flag(表示該學生的5門成績是否正確錄入,如果有負值,則把flag修改為true,表示錄入錯誤),初始值為false
boolean flag = false;

//4. 利用for循環,錄入5個成績
for (int i=1; i<=5; i++){
System.out.println("請輸入第"+i+"門成績");
int num = sc.nextInt();
//(1)判斷當前的成績如果小於0,flag賦值為true,終止for循環
if (num <0){
flag = true;
break;
}else{
//(2)否則,如果當前錄入的成績>=0,累加求和
sum+=num;
}
}

//5. 打印結果
//(1)如果flag為true,打印錄入錯誤
if (flag == true){
System.out.println("客官不可以,錄入數據有錯誤");
}else{
//(2)否則如果flag為false,打印總分和平均分
System.out.println("總分:"+sum);
System.out.println("平均分:"+sum/5);
}
}
}

運行效果:

 

 

 

 




免責聲明!

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



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