17、IDEA斷點調試、測試題


IDEA斷點調試

1、設置斷點

選擇要設置斷點的代碼行,在行號的區域后面單擊左鍵即可。

2、開啟調試會話

點擊Debug按鈕開啟調試。

IDEA下方出現Debug視圖,紅色箭頭指向的是現在調試程序停留的代碼行,方法f2()中程序的第23行。

Frames是程序的方法調用棧區,在這個區域顯示了程序執行到斷點處所調用過的方法,越下面的方法越早被調用。

3、單步調試

3.1、step over

點擊紅色箭頭指向的按鈕,程序向下執行一行,(如果當前行有方法調用,這個方法將被執行完畢返回,然后到下一行)

3.2、step into

點擊紅色箭頭指向的按鈕,程序向下執行一行,如果該行有自定義方法,則進入自定義方法的邏輯(不會進入官方類庫的方法)。

3.3、force step into

該按鈕在調試時能進入任何方法。

3.4、step out

如果在調試的時候,step into / force step into進入了一個方法,並覺得該方法沒有問題,你就可以使用step out跳出該方法,返回該方法被調用處的下一行語句,注意:該方法已執行完畢。

3.5、Drop Frame

點擊該按鈕后,你將返回到當前方法的調用處重新執行,並且所有上下文變量都回到那個時候,只要調用鏈中還有上級方法,可以跳到其中的任何一個方法。

4、高級調試

4.1、跨斷點調試

設置多個斷點開始調試。

想移動到下一個斷點,點擊紅色箭頭指向的按鈕。

4.2、設置變量值

這個功能可以更加快速的跳出循環語句。

4.3、跳到斷點處和跳到光標所在行

糾錯

1、下面關於Java中包的敘述正確的是 ACD

A、在Java中可以使用import語句導入包

B、在Java中可以使用package語句導入包

C、位於同一個包中的類,不需要導入包就可以直接訪問

D、不同的包中可以出現類名相同的類

在Java中package用於定義包,import用於導入包。

2、下列有關抽象類的敘述正確的是 C

A、抽象類中一定含有抽象方法

B、抽象類既能被實例化也能被繼承

C、抽象類的聲明必須包含abstract關鍵字

D、抽象類中不能有構造方法

3、下列關於構造函數的說法正確的是 AB

A、方法名必須與類名相同

B、使用new關鍵字創建對象時,Java虛擬機會自動調用構造函數

C、我們在定義一個類時,必須要聲明至少一個構造函數

D、構造函數中不能使用return語句

一個類默認會存在一個無參的構造函數,所以可以不用聲明;
構造函數中可以使用return語句,但是只能是return;

4、關於繼承,以下說法正確的是 AD

A、Java中只支持單繼承,一個類只能繼承一個類,但是可以有多個子類

B、一個類如果沒有自己寫無參構造方法,那么子類將無法繼承

C、子類可以當父類用,父類不可以當子類用

D、子類重寫父類方法時訪問權限不能更低

在繼承中,父類的構造方法不能繼承,但是子類可以通過super關鍵字進行調用
子類可以當父類用,叫做多態;父類可以當子類用,應該叫向下轉型。

5、下列說法正確的是 ABD

A、實例方法可以直接調用超類的實例方法

B、實例方法可以直接調用超類的類方法

C、實例方法可以直接調用其他類的實例方法

D、實例方法可以直接調用本類的類方法

實例方法調用其他類的實例方法,必須先創建對象,通過對象調用

6、小芳的媽媽每天給她2.5元錢,她都會存起來,但是,每當這一天是存錢的第5天或者5的倍數的話,她都會花去6元錢,請問,經過多少天,小芳才可以存到100元錢。

package org.westos.demo2;


/**
 * @author lwj
 * @date 2020/5/8 20:36
 */
public class Test {
    public static void main(String[] args) {
        double sum = 0;
        double dayOfMoney = 2.5;
        int cost = 6;
        int index = 0;
        int total = 100;
        while (sum < total) {
            index++;
            sum += dayOfMoney;
            if (index % 5 == 0) {
                sum -= cost;
            }
        }
        System.out.println(index);
        //74
    }
}

7、求 s=a+aa+aaa+aaaa+aa...a 的和,其中a是一個數字,例如

2+22+222+2222+2.....2 最大有幾個2由鍵盤錄入得到

例如提示用戶 請輸入你要求和的數字

用戶輸入的是3

請輸入你要的最大的數字個數

用戶輸入的是5

那么就是求 3+33+333+3333+33333 的和。

我的方法(low)

package org.westos.demo2;

import java.util.Scanner;

/**
 * @author lwj
 * @date 2020/5/8 20:40
 */
public class Demo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入你要求和的數字:");
        int num = sc.nextInt();
        System.out.println("請輸入你要的最大數字的個數:");
        int length = sc.nextInt();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < length; i++) {
            sb.append(num);
        }
        String s = sb.toString();
        int max = Integer.parseInt(s);
        int add = add(max);
        System.out.println(add);
        //37035
    }

    public static int add(int num) {
        if (num / 10 == 0) {
            return num;
        }
        return num + add(num / 10);
    }
}
//3
//5
//37035

老師的方法(時間復雜度、空間復雜度小)

class Demo2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入你要求和的數字:");
        int num = sc.nextInt();
        System.out.println("請輸入你要的最大數字的個數:");
        int length = sc.nextInt();
        //3 + 33 + 333 + 3333 + 33333
        int temp = 0;
        //代表每個元素
        int sum = 0;
        for (int i = 0; i < length; i++) {
            temp += num;
            sum += temp;
            num *= 10;
        }
        System.out.println(sum);
        //37035
    }
}


免責聲明!

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



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