天天看點

day06javaDebug模式

    • 1.Debug模式
      • 1.1什麼是Debug模式【了解】
      • 1.2Debug模式操作流程【應用】
    • 2.基礎練習
      • 2.1減肥計劃if版本【應用】
        • 2.1.1案例需求
        • 2.1.2代碼實作
      • 2.2減肥計劃switch版本【應用】
        • 2.2.1案例需求
        • 2.2.2代碼實作
      • 2.3逢七跳過【應用】
        • 2.3.1案例需求
        • 2.3.2代碼實作
      • 2.4不死神兔【應用】
        • 2.4.1案例需求
        • 2.4.2代碼實作
      • 2.5百錢白雞【應用】
        • 2.5.1案例需求
        • 2.5.2代碼實作
      • 2.6數組元素求和【應用】
        • 2.6.1案例需求
        • 2.6.2代碼實作
      • 2.7判斷兩個數組是否相同【應用】
        • 2.7.1案例需求
        • 2.7.2代碼實作
      • 2.8查找元素在數組中出現的索引位置【應用】
        • 2.8.1案例需求
        • 2.8.2代碼實作
      • 2.9數組元素反轉【應用】
        • 2.9.1案例需求
        • 2.9.2代碼實作
      • 2.10評委打分【應用】
        • 2.10.1案例需求
        • 2.10.2代碼實作

1.Debug模式

1.1什麼是Debug模式【了解】

是供程式員使用的程式調試工具,它可以用于檢視程式的執行流程,也可以用于追蹤程式執行過程來調試程式。

1.2Debug模式操作流程【應用】

  • 如何加斷點
    • 選擇要設定斷點的代碼行,在行号的區域後面單擊滑鼠左鍵即可
    [外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(
    day06javaDebug模式
  • 如何運作加了斷點的程式
    • 在代碼區域右鍵Debug執行
    day06javaDebug模式
  • 看哪裡
    • 看Debugger視窗
day06javaDebug模式
  • 看Console視窗
day06javaDebug模式
  • 點哪裡
    • 點Step Into (F7)這個箭頭,也可以直接按F7
    day06javaDebug模式
  • 如何删除斷點
    • 選擇要删除的斷點,單擊滑鼠左鍵即可
    day06javaDebug模式
    • 如果是多個斷點,可以每一個再點選一次。也可以一次性全部删除
    day06javaDebug模式

2.基礎練習

2.1減肥計劃if版本【應用】

2.1.1案例需求

​ 輸入星期數,顯示今天的減肥活動

​ 周一:跑步

​ 周二:遊泳

​ 周三:慢走

​ 周四:動感單車

​ 周五:拳擊

​ 周六:爬山

​ 周日:好好吃一頓

2.1.2代碼實作

/*
    思路:
        1:鍵盤錄入一個星期數,用一個變量接收
        2:對星期數進行判斷,這裡用 if 語句實作
        3:在對應的語句控制中輸出對應的減肥活動
 */
public class Test01 {
    public static void main(String[] args) {
        //鍵盤錄入一個星期數,用一個變量接收
        Scanner sc = new Scanner(System.in);

        System.out.println("請輸入一個星期數:");
        int week = sc.nextInt();

        //對星期數進行判斷,這裡用 if 語句實作
        if (week < 1 || week > 7) {
            System.out.println("你輸入的星期數有誤");
        } else if (week == 1) {
            System.out.println("跑步");
        } else if (week == 2) {
            System.out.println("遊泳");
        } else if (week == 3) {
            System.out.println("慢走");
        } else if (week == 4) {
            System.out.println("動感單車");
        } else if (week == 5) {
            System.out.println("拳擊");
        } else if (week == 6) {
            System.out.println("爬山");
        } else {
            System.out.println("好好吃一頓");
        }
    }
}
           

2.2減肥計劃switch版本【應用】

2.2.1案例需求

​ 輸入星期數,顯示今天的減肥活動

​ 周一:跑步

​ 周二:遊泳

​ 周三:慢走

​ 周四:動感單車

​ 周五:拳擊

​ 周六:爬山

​ 周日:好好吃一頓

2.2.2代碼實作

/*
    思路:
        1:鍵盤錄入一個星期數,用一個變量接收
        2:對星期數進行判斷,這裡用 switch 語句實作
        3:在對應的語句控制中輸出對應的減肥活動

    導包:
        1:手動導包  import java.util.Scanner;
        2:快捷鍵導包 Alt+Enter
        3:自動導包
 */
public class Test02 {
    public static void main(String[] args) {
        //鍵盤錄入一個星期數,用一個變量接收
        Scanner sc = new Scanner(System.in);

        System.out.println("請輸入一個星期數:");
        int week = sc.nextInt();

        //對星期數進行判斷,這裡用 switch 語句實作
        switch (week) {
            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("你輸入的星期數有誤");
        }
    }
}
           

2.3逢七跳過【應用】

2.3.1案例需求

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

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

​ 為了幫助大家更好的玩這個遊戲,這裡我們直接在控制台列印出1-100之間的滿足逢七必過規則的資料。

​ 這樣,大家将來在玩遊戲的時候,就知道哪些資料要說:過。

2.3.2代碼實作

/*
    思路:
        1:資料在1-100之間,用for循環實作資料的擷取
        2:根據規則,用if語句實作資料的判斷:要麼個位是7,要麼十位是7,要麼能夠被7整除
        3:在控制台輸出滿足規則的資料
 */
public class Test03 {
    public static void main(String[] args) {
        //資料在1-100之間,用for循環實作資料的擷取
        for(int x=1; x<=100; x++) {
            //根據規則,用if語句實作資料的判斷:要麼個位是7,要麼十位是7,要麼能夠被7整除
            if(x%10==7 || x/10%10==7 || x%7==0) {
                //在控制台輸出滿足規則的資料
                System.out.println(x);
            }
        }
    }
}
           

2.4不死神兔【應用】

2.4.1案例需求

​ 有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,

​ 假如兔子都不死,問第二十個月的兔子對數為多少?

2.4.2代碼實作

/*
   思路:
        1:為了存儲多個月的兔子對數,定義一個數組,用動态初始化完成數組元素的初始化,長度為20
        2:因為第1個月,第2個月兔子的對數是已知的,都是1,是以數組的第1個元素,第2個元素值也都是1
        3:用循環實作計算每個月的兔子對數
        4:輸出數組中最後一個元素的值,就是第20個月的兔子對數
 */
public class Test04 {
    public static void main(String[] args) {
        //為了存儲多個月的兔子對數,定義一個數組,用動态初始化完成數組元素的初始化,長度為20
        int[] arr = new int[20];

        //因為第1個月,第2個月兔子的對數是已知的,都是1,是以數組的第1個元素,第2個元素值也都是1
        arr[0] = 1;
        arr[1] = 1;

        //用循環實作計算每個月的兔子對數
        for(int x=2; x<arr.length; x++) {
            arr[x] = arr[x-2] + arr[x-1];
        }

        //輸出數組中最後一個元素的值,就是第20個月的兔子對數
        System.out.println("第二十個月兔子的對數是:" + arr[19]);
    }
}
           

2.5百錢白雞【應用】

2.5.1案例需求

​ 我國古代數學家張丘建在《算經》一書中提出的數學問題:雞翁一值錢五,雞母一值錢三,雞雛三值錢一。

​ 百錢買百雞,問雞翁、雞母、雞雛各幾何?

2.5.2代碼實作

/*
    思路:
        1:第1層循環,用于表示雞翁的範圍,初始化表達式的變量定義為 x=0,判斷條件是x<=20
        2:第2層循環,用于表示雞母的範圍,初始化表達式的變量定義為 y=0,判斷條件是y<=33
        3:這個時候,用于表示雞雛的變量 z = 100 – x – y
        4:判斷表達式 z%3==0 和表達式 5*x + 3*y + z/3 = 100 是否同時成立,如果成立,輸出對應的 x,y,z 的值,就是對應的雞翁,雞母,雞雛的值
 */
public class Test05 {
    public static void main(String[] args) {
        //第1層循環,用于表示雞翁的範圍,初始化表達式的變量定義為 x=0,判斷條件是x<=20
        for(int x=0; x<=20; x++) {
            //第2層循環,用于表示雞母的範圍,初始化表達式的變量定義為 y=0,判斷條件是y<=33
            for(int y=0; y<=33; y++) {
                //這個時候,用于表示雞雛的變量 z = 100 – x – y
                int z = 100 - x - y;

                //判斷表達式 z%3==0 和表達式 5*x + 3*y + z/3 = 100 是否同時成立
                if(z%3==0 && 5*x+3*y+z/3==100) {
                    System.out.println(x+","+y+","+z);
                }
            }
        }
    }
}
           

2.6數組元素求和【應用】

2.6.1案例需求

​ 有這樣的一個數組,元素是{68,27,95,88,171,996,51,210}。求出該數組中滿足要求的元素和,

​ 要求是:求和的元素個位和十位都不能是7,并且隻能是偶數

2.6.2代碼實作

/*
   思路:
        1:定義一個數組,用靜态初始化完成數組元素的初始化
        2:定義一個求和變量,初始值是0
        3:周遊數組,擷取到數組中的每一個元素
        4:判斷該元素是否滿足條件,如果滿足條件就累加
        5:輸出求和變量的值
 */
public class Test06 {
    public static void main(String[] args) {
        //定義一個數組,用靜态初始化完成數組元素的初始化
        int[] arr = {68, 27, 95, 88, 171, 996, 51, 210};

        //定義一個求和變量,初始值是0
        int sum = 0;

        //周遊數組,擷取到數組中的每一個元素
        for(int x=0; x<arr.length; x++) {
            //判斷該元素是否滿足條件,如果滿足條件就累加
            if(arr[x]%10!=7 && arr[x]/10%10!=7 && arr[x]%2==0) {
                sum += arr[x];
            }
        }

        //輸出求和變量的值
        System.out.println("sum:" + sum);
    }
}
           

2.7判斷兩個數組是否相同【應用】

2.7.1案例需求

​ 定義一個方法,用于比較兩個數組的内容是否相同

2.7.2代碼實作

/*
    思路:
        1:定義兩個數組,分别使用靜态初始化完成數組元素的初始化
        2:定義一個方法,用于比較兩個數組的内容是否相同
        3:比較兩個數組的内容是否相同,按照下面的步驟實作就可以了
            首先比較數組長度,如果長度不相同,數組内容肯定不相同,傳回false
            其次周遊,比較兩個數組中的每一個元素,隻要有元素不相同,傳回false
            最後循環周遊結束後,傳回true
        4:調用方法,用變量接收
        5:輸出結果
 */
public class Test07 {
    public static void main(String[] args) {
        //定義兩個數組,分别使用靜态初始化完成數組元素的初始化
        int[] arr = {11, 22, 33, 44, 55};
        //int[] arr2 = {11, 22, 33, 44, 55};
        int[] arr2 = {11, 22, 33, 44, 5};


        //調用方法,用變量接收
        boolean flag = compare(arr,arr2);
        //輸出結果
        System.out.println(flag);
    }

    //定義一個方法,用于比較兩個數組的内容是否相同
    /*
        兩個明确:
            傳回值類型:boolean
            參數:int[] arr, int[] arr2
     */
    public static boolean compare(int[] arr, int[] arr2) {
        //首先比較數組長度,如果長度不相同,數組内容肯定不相同,傳回false
        if(arr.length != arr2.length) {
            return false;
        }

        //其次周遊,比較兩個數組中的每一個元素,隻要有元素不相同,傳回false
        for(int x=0; x<arr.length; x++) {
            if(arr[x] != arr2[x]) {
                return false;
            }
        }

        //最後循環周遊結束後,傳回true
        return true;
    }
}
           

2.8查找元素在數組中出現的索引位置【應用】

2.8.1案例需求

​ 已知一個數組 arr = {19, 28, 37, 46, 50}; 鍵盤錄入一個資料,查找該資料在數組中的索引。

​ 并在控制台輸出找到的索引值。如果沒有查找到,則輸出-1

2.8.2代碼實作

/*
    思路:
        1:定義一個數組,用靜态初始化完成數組元素的初始化
        2:鍵盤錄入要查找的資料,用一個變量接收
        3:定義一個索引變量,初始值為-1
        4:周遊數組,擷取到數組中的每一個元素
        5:拿鍵盤錄入的資料和數組中的每一個元素進行比較,如果值相同,就把該值對應的索引指派給索引變量,并結束循環
        6:輸出索引變量
 */
public class Test08 {
    public static void main(String[] args) {
        //定義一個數組,用靜态初始化完成數組元素的初始化
        int[] arr = {19, 28, 37, 46, 50};

        //鍵盤錄入要查找的資料,用一個變量接收
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入要查找的資料:");
        int number = sc.nextInt();

        //調用方法
        int index = getIndex(arr, number);

        //輸出索引變量
        System.out.println("index: " + index);
    }

    //查找指定的資料在數組中的索引
    /*
        兩個明确:
            傳回值類型:int
            參數:int[] arr, int number
     */
    public static int getIndex(int[] arr, int number) {
        //定義一個索引變量,初始值為-1
        int index = -1;

        //周遊數組,擷取到數組中的每一個元素
        for(int x=0; x<arr.length; x++) {
            //拿鍵盤錄入的資料和數組中的每一個元素進行比較,如果值相同,就把該值對應的索引指派給索引變量,并結束循環
            if(arr[x] == number) {
                index = x;
                break;
            }
        }

        //傳回索引
        return index;
    }
}
           

2.9數組元素反轉【應用】

2.9.1案例需求

​ 已知一個數組 arr = {19, 28, 37, 46, 50}; 用程式實作把數組中的元素值交換,

​ 交換後的數組 arr = {50, 46, 37, 28, 19}; 并在控制台輸出交換後的數組元素。

2.9.2代碼實作

/*
    思路:
        1:定義一個數組,用靜态初始化完成數組元素的初始化
        2:循環周遊數組,這一次初始化語句定義兩個索引變量,判斷條件是開始索引小于等于結束索引
        3:變量交換
        4:周遊數組
 */
public class Test09 {
    public static void main(String[] args) {
        //定義一個數組,用靜态初始化完成數組元素的初始化
        int[] arr = {19, 28, 37, 46, 50};

        //調用反轉的方法
        reverse(arr);

        //周遊數組
        printArray(arr);
    }

    /*
        兩個明确:
            傳回值類型:void
            參數:int[] arr
     */
    public static void reverse(int[] arr) {
        //循環周遊數組,這一次初始化語句定義兩個索引變量,判斷條件是開始索引小于等于結束索引
        for (int start = 0, end = arr.length - 1; start <= end; start++, end--) {
            //變量交換
            int temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;
        }
    }

    /*
        兩個明确:
            傳回值類型:void
            參數:int[] arr
     */
    public static void printArray(int[] arr) {
        System.out.print("[");

        for (int x = 0; x < arr.length; x++) {
            if (x == arr.length - 1) {
                System.out.print(arr[x]);
            } else {
                System.out.print(arr[x] + ", ");
            }
        }

        System.out.println("]");
    }
}
           

2.10評委打分【應用】

2.10.1案例需求

​ 在程式設計競賽中,有6個評委為參賽的選手打分,分數為0-100的整數分。

​ 選手的最後得分為:去掉一個最高分和一個最低分後 的4個評委平均值 (不考慮小數部分)。

2.10.2代碼實作

/*
    思路:
        1:定義一個數組,用動态初始化完成數組元素的初始化,長度為6
        2:鍵盤錄入評委分數
        3:由于是6個評委打分,是以,接收評委分數的操作,用循環改進
        4:定義方法實作擷取數組中的最高分(數組最大值),調用方法
        5:定義方法實作擷取數組中的最低分(數組最小值) ,調用方法
        6:定義方法實作擷取數組中的所有元素的和(數組元素求和) ,調用方法
        7:按照計算規則進行計算得到平均分
        8:輸出平均分
 */
public class Test10 {
    public static void main(String[] args) {
        //定義一個數組,用動态初始化完成數組元素的初始化,長度為6
        int[] arr = new int[6];

        //鍵盤錄入評委分數
        Scanner sc = new Scanner(System.in);

        //由于是6個評委打分,是以,接收評委分數的操作,用循環改進
        for(int x=0; x<arr.length; x++) {
            System.out.println("請輸入第" + (x + 1) + "個評委的打分:");
            arr[x] = sc.nextInt();
        }

        //printArray(arr);

        //定義方法實作擷取數組中的最高分(數組最大值),調用方法
        int max = getMax(arr);

        //定義方法實作擷取數組中的最低分(數組最小值) ,調用方法
        int min = getMin(arr);

        //定義方法實作擷取數組中的所有元素的和(數組元素求和) ,調用方法
        int sum = getSum(arr);

        //按照計算規則進行計算得到平均分
        int avg = (sum - max - min) / (arr.length - 2);

        //輸出平均分
        System.out.println("選手的最終得分是:" + avg);

    }

    /*
        兩個明确:
            傳回值類型:int
            參數:int[] arr
     */
    public static int getSum(int[] arr) {
        int sum = 0;

        for(int x=0; x<arr.length; x++) {
            sum += arr[x];
        }

        return sum;
    }

    /*
        兩個明确:
            傳回值類型:int
            參數:int[] arr
     */
    public static int getMin(int[] arr) {
        int min = arr[0];

        for(int x=1; x<arr.length; x++) {
            if(arr[x] < min) {
                min = arr[x];
            }
        }

        return min;
    }

    /*
        兩個明确:
            傳回值類型:int
            參數:int[] arr
     */
    public static int getMax(int[] arr) {
        int max = arr[0];

        for(int x=1; x<arr.length; x++) {
            if(arr[x] > max) {
                max = arr[x];
            }
        }

        return max;
    }

    //周遊數組
    public static void printArray(int[] arr) {
        System.out.print("[");

        for (int x = 0; x < arr.length; x++) {
            if (x == arr.length - 1) {
                System.out.print(arr[x]);
            } else {
                System.out.print(arr[x] + ", ");
            }
        }

        System.out.println("]");
    }
}