迴圈高階綜合練習

Y423x發表於2024-03-03

迴圈高階綜合練習


無限迴圈和跳轉控制語句

無限迴圈

  • 無限迴圈:迴圈一直停不下來。

格式:

for:

for(;;){
    System.out.println("給女神表白");
}

while:

while(true){
    System.out.println("女神答應我了");
}

do...while:

do{
    System.out.println("女神答應我了");
}while(true);

注意事項

  • 無限迴圈的下面不能再寫其它程式碼了,因為迴圈永遠停不下來,那麼下面的程式碼永遠執行不到。

跳轉控制語句

  • 跳轉控制語句:在迴圈的過程中,跳到其他語句上執行。

練習

案例1:小老虎吃包子

小老虎吃包子,第三個包子有蟲子,跳過。

public class SkipLoopDemo1 {
    public static void main(String[] args) {
        //1.跳過某一次迴圈
        for (int i = 1; i <= 5; i++) {
            if(i == 3){
                //結束本次迴圈,繼續下次迴圈。
                continue;
            }
            System.out.println("小老虎在吃第" + i + "個包子");
        }
    }
}

案例2:小老虎吃包子

小老虎吃包子,吃完第三個就飽了。

public class SkipLoopDemo2 {
    public static void main(String[] args) {
        //2.結束整個迴圈
        for (int i = 1; i <= 5; i++) {
            System.out.println("小老虎在吃第" + i + "個包子");
            if(i == 3){
                //結束整個迴圈
                break;
            }
        }
    }
}

總結:

  1. continue:跳過本次迴圈,繼續執行下次迴圈。
  2. break:結束整個迴圈。

練習(4.隨機數)

案例1:逢7過

朋友聚會的時候可能會玩一個遊戲: 逢7過

遊戲規則:從任意一個數字開始報數,當你要報的數字是包含7或者是7的倍數時都要說:過

需求:使用程式在控制檯列印出1-100之間的滿足逢七必過規則的資料

public class LoopTest1 {
    public static void main(String[] args) {
        /*朋友聚會的時候可能會玩一個遊戲: 逢7過
        遊戲規則:從任意一個數字開始報數,當你要報的數字是包含7或者是7的倍數時都要說:過
        需求:使用程式在控制檯列印出1-100之間的滿足逢七必過規則的資料
         */

        //分析:
        //個位7  十位7  7倍數

        //1.得到1~100之間的每一個數字
        //開始:1
        //結束:100
        for (int i = 1; i <= 100; i++) {
        //2.判斷每一個數字,如果符合規則,就列印過,如果不符合規則就列印真實的數字
            if(i % 10 == 7 || i / 10 % 10 == 7 || i / 7 == 0){
                System.out.println("過");
                continue;
            }
            System.out.println(i);
        }
    }
}

案例2:求平方根

需求:鍵盤錄入一個大於等於2的整數x,計算並返回x的平方根。

結果只保留整數部分,小數部分將被捨去。

import java.util.Scanner;

public class LoopTest2 {
    public static void main(String[] args) {
        /*需求:鍵盤錄入一個大於等於2的整數x,計算並返回x的平方根。
        結果只保留整數部分,小數部分將被捨去。
         */

        //分析:
        //1.鍵盤錄入一個整數
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入一個整數");
        int number = sc.nextInt();
        //2.從1開始迴圈判斷
        //開始:1 結束:number
        for (int i = 1; i <= number; i++) {
            //用i * i 再跟number進行比較
            if(i * i == number){
                System.out.println(i + "就是" + number + "的平方根");
                //一旦找到了,迴圈就可以停止了,後面的數字就不需要再找了,提高程式碼的執行效率。
                break;
            }else if(i * i > number){
                System.out.println((i - 1) + "就是" + number + "平方根的整數部分");
                break;
            }
        }
    }
}

案例3:求質數

需求:鍵盤錄入一個正整數x,判斷該整數是否為一個質數。

基礎思路:

import java.util.Scanner;

public class LoopTest3 {
    public static void main(String[] args) {
        //需求:鍵盤錄入一個正整數x,判斷該整數是否為一個質數。

        //1.鍵盤錄入一個正整數
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入一個正整數");
        int number = sc.nextInt();

        //定義一個變數,表示標記
        //標記著number是一個質數
        //true:是一個質數
        //false:不是一個質數
        boolean flag = true;

        //2.判斷
        //寫一個迴圈,從2開始判斷,一直判斷到number-1為止
        //看這個範圍之內,有沒有數字可以被number整除
        for (int i = 2; i < number; i++) {
            //i 依次表示這個範圍之內的每一個數字
            //看number是否能被i整除
            if(number % i == 0){
                flag = false;
                break;
            }
        }
        //只有當迴圈結束了,表示這個範圍之內所有的數字都判斷完畢了
        //此時才能斷定number是一個質數
        if(flag){
            System.out.println(number + "是一個質數");
        }else{
            System.out.println(number + "不是一個質數");
        }
    }
}

簡化思路(用於提高程式的執行效率):

import java.util.Scanner;

public class LoopTest4 {
    public static void main(String[] args) {

        //思路:
        //81
        //1*81
        //3*27
        //9*9
        
        //以81的平方根9,為中心
        //假設a * b = 81
        //那麼a和b中,其中有一個必定是小於等於9的
        //另一個是大於等於9的
        
        //假設,都是大於9 --- 9.1 * 9.1 > 81
        //假設,都是小於9 --- 8.9 * 8.9 < 81
        //其中一個數字一定是小於等於平方根
        //另一個數字一定大於等於平方根
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入一個整數");
        int number = sc.nextInt();
        boolean flag = true;
        for (int i = 1; i <= number; i++) {
            if(i * i >= number){
                for(int a = 2; a <= i;a++){
                    if(number % a == 0){
                        flag = false;
                        break;
                    }
                }
                if(flag){
                    System.out.println(number + "是一個質數");
                }else{
                    System.out.println(number + "不是一個質數");
                }
                break;
            }
        }
    }
}

案例4:猜數字小遊戲

  • 獲取隨機數:Java幫我們寫好一個類叫Random,這個類就可以生成一個隨機數。

  • 使用步驟:

    1. 導包 --- Random這個類在哪

      import java.util.Random;
      //導包的動作必須出現在類定義的上邊。
      
    2. 建立物件 --- 表示我要開始用Random這個類了

      Random r = new Random ();
      //上面這個格式裡面,只有r是變數名,可以變,其他的都不允許變。
      
    3. 生成隨機數 --- 真正開始幹活

      int number = r.nextInt(隨機數範圍);
      //上面這個格式裡面,只有number是變數名,可以變,其他的都不允許變。
      

    範例1:

    import java.util.Random;
    
    public class LoopTest5 {
        public static void main(String[] args) {
            //先獲取一個隨機數。
            //範圍:0~100
    
            //1.導包
            //2.建立物件
            Random r = new Random();
    
            //3.生成隨機數
            //判斷技巧:
            //在小括號中,書寫的是生成隨機數的範圍
            //這個範圍一定是從0開始的
            //到這個數-1結束
            //口訣:包頭不包尾,包左不包右
            int number = r.nextInt(100);//0 ~99
    
            System.out.println(number);
        }
    }
    

    範例2:

    import java.util.Random;
    
    public class LoopTest6 {
        public static void main(String[] args) {
            //需求:
            //隨機數範圍:1-100
            //方法1.
            Random r = new Random();
            int number1 = r.nextInt(1,101);//1~100
            System.out.println(number1);
    
            //方法2:
            //1.讓這個範圍頭尾都減去一個值,讓這個範圍從0開始
            //2.尾巴+1
            //3.最終的結果,再加上第一步減去的值
            int number2 = r.nextInt(100) + 1;
            System.out.println(number2);
        }
    }
    

需求:程式自動生成一個1-100之間的隨機數字,使用程式實現猜出這個數字是多少?

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

public class LoopTest7 {
    public static void main(String[] args) {
        //需求:程式自動生成一個1-100之間的隨機數字,使用程式實現猜出這個數字是多少?

        //擴充套件需求:加一個保底機制,10次猜不中,直接顯示失敗

        //注意事項:
        //1.生成隨機數的程式碼int number = r.nextInt(1,101);
        //不能寫在迴圈的裡面,否則每一次都會產生一個新的隨機數

        //2.抽獎機制
        //保底 xx次

        //計數器
        //用來統計當前已經猜了多少次
        int count = 0;
        //分析:
        //1.生成一個1-100之間的隨機數字
        Random r = new Random();
        int number = r.nextInt(1,101);
        //2.猜這個數字是多少
        Scanner sc = new Scanner(System.in);
        while (true){
            System.out.println("請輸入你要猜的數字");
            int guessNumber = sc.nextInt();
            //3.判斷兩個數字給出不同的提示
            //猜的數字大了,提示 大了
            //猜的數字笑了,提示 小了
            //猜的數字一樣,提示 猜中了
            count++;
            if(count == 10){
                System.out.println("遊戲失敗");
                break;
            }
            if(guessNumber > number){
                System.out.println("大了");
            }else if(guessNumber < number){
                System.out.println("小了");
            }else{
                System.out.println("猜中了");
                break;
            }
        }
    }
}

相關文章