20165202 實驗一 Java開發環境的熟悉
一、實驗內容及步驟
(一)使用JDK編譯、運行簡單的Java程序
建立“自己學號exp1”的目錄
mkdir 20165202exp1
進入目錄
cd 20165202exp1
在“自己學號exp1”目錄下建立src,bin等目錄
mkdir bin
mkdir src
vim編輯代碼
vi Hello.java
javac,java的執行在“自己學號exp1”目錄
javac -d bin src/Hello.java
運行程序
java Hello
運行截圖
碼雲鏈接
(二)使用IDEA編輯、編譯、運行、調試Java程序
設置斷點只需在要設置斷點的行號旁用鼠標單擊一下即可使用。使用
Alt+Shift+F9
- 單步運行有兩種:
Step Into
(快捷捷F7)和Step Over
(快捷捷F8)實際使用中我們優先使用Step Over
,只有方法執行出錯了,說明程序問題在被調用方法中,這時再回來通過Step Into
進入方法進行調試。 臨時斷點:最簡單的方法是把光標移到要添加斷點的行,使用菜單「Run」->「Toggle Temporary Line Breakpoint」或使用快捷鍵
Ctrl+Alt+Shift+F8
條件斷點: 在第9行左邊斷點處單擊鼠標右鍵,彈出斷點屬性框,我們設置條件“i==50”
方法斷點:把光標移到方法中的任一行,使用菜單「Run」->「Toggle Method Breakpoint
(三)練習(通過命令行和IDEA兩種方式實現,並使用IDEA進行調試)
實現Fibonacci數列功能,並進行測試(正常情況,異常情況,邊界情況)
- 程序代碼
1 import java.util.Scanner; 2 3 public class fibonacci { 4 5 public static void main(String[] args) { 6 7 Scanner scanner = new Scanner(System.in); 8 9 System.out.println("請輸入一個整數:"); 10 11 int n = scanner.nextInt(); 12 13 System.out.println("fibonacci數列為:"); 14 if(n<=0) { 15 System.out.println("非法輸入"); 16 } 17 else { 18 for (int j = 1; j <= n; j++) { 19 20 System.out.println(" a["+j+"] = "+fibonacci(j)); 21 22 } 23 } 24 scanner.close(); 25 26 } 27 28 private static int fibonacci(int i) { 29 30 if (i == 1 || i == 2){ 31 32 return 1; 33 34 }else{ 35 36 return fibonacci(i - 1) + fibonacci(i - 2); 37 38 } 39 40 } 41 42 }
- 命令行運行:
(1)正常情況
(2)異常情況
(3)邊界情況
碼雲鏈接
- IDEA運行:
(1)正常情況
(2)異常情況
(3)邊界情況
IDEA調試
單步調試:在第6、9行設置斷點
方法斷點:在第4、23行設置斷點
二、實驗過程中遇到的問題
開始寫練習代碼Fibonacci實現時錯誤理解了題意,輸出值為對應數字下的F函數
後來只能輸出固定前n項(例如20),結合之前學習的Scanner這一用法
Scanner scanner = new Scanner(System.in); System.out.println("請輸入一個整數:"); int n = scanner.nextInt();
通過調用解決了無法通過輸入改變n的問題
三、實驗體會與總結
統計PSP(Personal Software Process)時間:
步驟 | 耗時 | 百分比 |
---|---|---|
需求分析 | 2min | 2.5% |
設計 | 8min | 10% |
代碼實現 | 25min | 31.25% |
測試 | 5min | 6.25% |
分析總結 | 40min | 50% |
個人總結
本次實驗內容較為基礎,主要考察java開發環境的熟悉和一些基本操作。編程有一套完整的流程:分析需求、設計、代碼實現、測試、總結,這也是我們今後編程的一個基本框架。在試驗過程中學習掌握了idea的相關用法,確實比vim命令行要好用一些,調試過程的顯示更加清晰。每周敲入課本代碼只是最基本的一項工作,在實際應用中我發現還需要結合更多的思考理解才能真正“學會應用”,不能機械地“為了敲代碼而敲”。
20165202 實驗一 Java開發環境的熟悉