Java學習筆記之IDE的Debug使用和基礎練習


0x00 概述

本文主要涉及Java IDE工具IntelliJ的Debug使用和一些Java基礎練習。

 

0x01 Debug模式

1.1 什么是Debug模式

是提供給程序員的程序測試調試工具,它可以用於查看程序的執行流程,也可以用於追蹤程序執行過程,以方便調試程序。

 

1.2 Debug模式操作流程

  • 如何加斷點,選擇斷點執行的代碼行,在行號的區域后面單擊鼠標左鍵即可

  •  如何運行加斷點的程序,在代碼區右鍵選擇Debug運行

  • 在哪里看,在Debuuger模式下的窗口觀察,看Console窗口

  • 點哪里,點擊Step Into(F7)這個箭頭,也可以直接按F7繼續執行

  • 如何刪除斷點,選擇要刪除的斷點,點擊鼠標左鍵即可

  • 如果是多個斷點,可以每一個再點擊一次,也可以一次性全部刪除(點擊下圖中的兩個重疊圓圈圖標)

 

0x02 基礎練習

2.1 減肥計划if版本

需求:輸入星期數,顯示今天的減肥活動,周一:跑步,周二:游泳,周三:慢走,周四:動感單車,周五:拳擊,周六:爬山,周日:吃頓好的

示例:

import java.util.Scanner;

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

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

        int weeknum = sc.nextInt();

        if (weeknum < 1 || weeknum > 7) {
            System.out.println("你輸入的星期數有誤。");
        } else if (weeknum == 1) {
            System.out.println("跑步");
        } else if (weeknum == 2) {
            System.out.println("游泳");
        } else if (weeknum == 3) {
            System.out.println("慢走");
        } else if (weeknum == 4) {
            System.out.println("動感單車");
        } else if (weeknum == 5) {
            System.out.println("拳擊");
        } else if (weeknum == 6) {
            System.out.println("爬山");
        } else {
            System.out.println("吃頓好的");
        }
    }
}

 

2.2 減肥計划switch版本

需求:輸入星期數,顯示今天的減肥活動,周一:跑步,周二:游泳,周三:慢走,周四:動感單車,周五:拳擊,周六:爬山,周日:吃頓好的

示例

/*
 *   思路:
 *      1. 鍵盤錄入一個星期數,用一個變量接收
 *      2. 對星期數進行判斷,這里用switch語句實現
 *      3. 對應的語句控制中輸出對應的減肥活動
 *
 *   導包:
 *      1. 手動導包 import java.util.Scanner;
 *      2. 快捷鍵導包, Alt+Enter;
 *      3. 自動導包
 */

import java.util.Scanner;

public class practise2 {
    public static void main(String[] args) {
        // 鍵盤錄入一個星期數,用一個變量接收
        Scanner sc = new Scanner(System.in);

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

        // 對星期數進行判斷,這里用switch語句實現
        switch (weeknum) {
            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 逢七跳過

需求:這個游戲叫逢七過,從任意一個數字開始報數,當你要報的數字包含7或者是7的倍數的時候說:過!遍歷1-100之間滿足逢七過規則的數據。

示例:

/*
      思路:
          1. 數據在1-100之間,用for循環實現數據的獲取
          2. 根據規則,用if語句實現數據的判斷,要么是個位是7,要么十位是7,要么能夠被7整除
          3. 在控制台輸出滿足規則的數據
*/
public class practise3 {
    public static void main(String[] args) {

        // 數據在1-100之間,用for循環實現數據的獲取
        for (int i = 1; i < 101; i++) {
            // 根據游戲規則,能被7整除,十位是7或者個位是7
            if (i % 7 == 0 || i % 10 == 7 || i / 10 % 7 == 0) {
                // 在控制台輸出滿足規則的數據
                System.out.println(i);
            }
        }
    }
}

 

2.4 不死神兔

需求:有一對兔子,從出生后第三個月起每個月都生一對兔子,小兔子長大到第三個月后每個月又生一對兔子,假如兔子不會死,問第二十個月的兔子有多少對

示例:

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

        // 因為第一個月和第二個月兔子對數都是1,所以數組前兩個元素的值也是1
        arr[0] = 1;
        arr[1] = 2;

        // 用循環實現計算每個月的兔子對數
        for (int i = 2; i < arr.length; i++) {
            arr[i] = arr[i - 1] + arr[i - 2];
        }
        // 輸出數組中最后一個元素的值,就是第20個月的兔子的對數,對應的index是19
        System.out.println(arr[19]);
    }
}

 

2.5 百錢百雞

需求:我國古代數學家張丘在《算經》一書中提出的數學問題:雞翁

示例:

/*
       思路:
           1. 第一層循環,用於表示雞翁的范圍,初始化表達式的變量定義為x=0,判斷條件是x<=20;
           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 practise5 {
    public static void main(String[] args) {
        // 第一層循環,用於表示雞翁的范圍,初始化表達式的變量定義為x=0,判斷條件是x<=20;
        for (int x = 0; x < 21; x++) {
            // 第二層循環,用於表示雞母的范圍,初始化表達式的變量定義為y=0,判斷條件是y<=33;
            for (int y = 0; y < 34; y++) {
                // 以上確定了雞翁和雞母的范圍,x和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("購買: ");
                    System.out.println("雞翁" + x + "只");
                    System.out.println("雞母" + y + "只");
                    System.out.println("雞雛" + z + "只");
                    System.out.println("----------------------");
                }
            }
        }
    }
}

 

2.6 數組元素求和

需求:有這樣的一個數組,元素是{68,27,95,88,171,996,51,210}。求出該數組中滿足要求的元素和,  要求是:求和的元素個位和十位都不能是7,並且只能是偶數

示例:

/*
       思路:
           1. 定義一個數組,用靜態初始化完成數組元素的初始化
           2. 定義一個求和變量,初始值是0
           3. 遍歷數組,獲取到數組中的每一個元素
           4. 判斷該元素是否滿足條件,滿足的話就累加到求和變量
           5. 輸出求和變量的值
 */
public class practise6 {
    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 判斷兩個數組是否相同

需求:定義一個方法,用於比較兩個數組的內容是否相同

示例:

/*
       思路:
           1. 定義兩個數組,分別使用靜態初始化完成數組元素的初始化
           2. 定義一個方法,用於比較兩個數組的內容是否相同
           3. 比較兩個數組的內容是否相同,按照下面的步驟實現:
                  首先比較數組長度,如果長度都不宜相同,返回false
                  其次遍歷數組,比較兩個數組中的每個元素,只要有元素不相同,返回false
                  最后循環遍歷結束,返回true
           4. 調用方法,使用變量接收
           5. 輸出結果
 */
public class practise7 {
    public static void main(String[] args) {
        // 定義兩個數組,分別使用靜態初始化完成數組元素的初始化
        int[] arrX = {11, 22, 33, 44, 55};
        //int[] arrY = {11, 22, 33, 44, 55};
        int[] arrY = {11,22,33,44,5};

        // 調用方法,使用boolean變量接收
        boolean flag = compare(arrX, arrY);


        // 輸出結果
        System.out.println(flag);
    }

    /*
        定義一個方法,用於比較兩個數組的內容是否相同
        兩個明確:
           返回值類型:boolean
           參數:int[] arr1, int[] arr2
     */
    public static boolean compare(int[] arr1, int[] arr2) {
        if (arr1.length != arr2.length) {
            return false;
        }

        // 其次遍歷,比較兩個數組中的每一個元素,只要有元素不相同,就返回false
        for (int i = 0; i < arr1.length; i++) {
            if (arr1[i] != arr2[i]) {
                return false;
            }
        }
        return true;
    }
}

 

2.8 查找元素在數組中出現的索引

需求:已知一個數組arr={19, 28, 37, 46, 50};鍵盤錄入一個數據,查找該數據在數組中的索引。並在控制台輸出找到的數值的索引值,如果沒找到數值,則輸出-1

案例:

import java.util.Scanner;

/*
       思路:
           1. 定義一個數組,用靜態初始化完成數組元素的初始化
           2. 鍵盤錄入要查找的數據,用一個變量接收
           3. 定義一個變量索引,初始值為1
           4. 遍歷數組,獲取到數組中的每一個元素
           5. 拿鍵盤錄入的數據和數組中的每一個元素進行比較,如果值相同,就把該值對應的索引賦值給索引變量,並結束循環
           6. 輸出索引變量
 */
public class practise8 {
    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) {
        // 默認index變量為-1
        int index = -1;

        // 遍歷數組,比較輸入的number和數組的每個元素
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == number) {
                index = i;
                break;
            }
        }
        // 返回索引
        return index;
    }
}

 

2.9 數組元素反轉

需求:已知一個數組arr={19,28,37,46,59};用程序實現把2數組中的元素交換,交換后的數組arr為原來的數組倒敘,並在控制台輸出。

案例:

/*
       思路:
          1. 定義一個數組,用靜態初始化完成數組元素的初始化
          2. 循環遍歷數組,這一次初始化語句定義兩個索引變量,判斷條件是開始索引小於等於結束索引
          3. 變量交換
          4. 遍歷數組
 */

public class practise9 {
    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 tmp = arr[start];
            arr[start] = arr[end];
            arr[end] = tmp;
        }
    }

    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] + ",");
            }
        }
    }
}

 

2.10 評委打分

需求:在編程競賽中,有6個評委為參賽的選手打分,分數為0-100的整數分。選手的最后得分為去掉一個最高分,去掉一個最低分,然后取剩下4個評委分數的均值。

案例:

import java.util.Scanner;

/*
       思路:
          1. 定義一個數組,用動態初始化完成數組元素的初始化,長度為6
          2. 鍵盤錄入6位評委的分數
          3. 使用循環接收每一個評委的分數
          4. 定義方法實現獲取數組中的最高分,調用方法
          5. 定義方法實現獲取數組中的最低分,調用方法
          6. 定義方法實現獲取數組中的所有元素的和,調用方法
          7. 按照計算規則計算出平均分
          8. 輸出平局分
 */
public class practise10 {
    public static void main(String[] args) {
        // 定義一個數組,長度位6,用動態初始化方法完成數組元素的初始化
        int[] arr = new int[6];

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

        // 使用for循環接收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 i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        return sum;
    }

    public static int getMax(int[] arr) {
        int max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i];
            }
        }
        return max;
    }

    public static int getMin(int[] arr) {
        int min = arr[0];
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] < min) {
                min = arr[i];
            }
        }
        return min;
    }

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

 


免責聲明!

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



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