20155303 《Java程序設計》實驗一(Java開發環境的熟悉)實驗報告
一、實驗內容及步驟
(一)使用JDK編譯、運行簡單的java程序
- 命令行下的程序開發
步驟一(新建文件夾):打開windows下的cmd → 輸入cd Code
命令進入Code
目錄 → 輸入md 20155303test
建立以自己學號命名的文件夾 → 輸入cd 20155303test
進入文件夾 → 輸入md exp1
建立“實驗一”文件夾 → 輸入cd exp1
進入“實驗一”文件夾
步驟二(編譯、運行java程序):使用vim編輯器編輯java程序 → 在命令行下編譯、運行
(二)使用IDEA編輯、編譯、運行、調試Java程序
1、新建「HelloJDB」類,輸入如下代碼:
2、在需要設置斷點的一行左側單擊鼠標,出現紅色圓點。比如如下在第六行設置了斷點:
在上方Run
菜單找到Debug...
進行單步調試:
截止到第六行運行結果如下:
3、繼續向下執行,可以單擊Step Over
,執行完方法。可以看到運行結果sum=11
。
『注意』:常用調試快捷圖標功能總結如下:
① Step Over(F8):程序向下執行一行(如果當前行有方法調用,這個方法將被執行完畢返回,然后到下一行)
② Step Into(F7):程序向下執行一行。如果該行有自定義方法,則運行進入自定義方法(不會進入官方類庫的方法)
③ Force Step Into:進入任何方法
④ Step Out(Shift+F8):如果在調試的時候進入了一個方法,並覺得該方法沒有問題,就可以使用stepout跳出該方法,返回到該方法被調用處的下一行語句。值得注意的是,該方法已執行完畢。
⑤ Run to Cursor:將程序運行到光標處。
4、如果想判斷循環內部是否出問題?比如我們想進入for循環,在第十行設置斷點,右擊出現對話框,在里面填寫自己想測試的數值,如i==50
,再單擊resume
圖標或者快捷鍵F9
即可得到運行結果。
二、練習:實現學生成績管理功能,並進行測試。
『要求』:通過命令行和IDEA兩種方式實現,在IDEA下練習調試程序。
- 設計思路:
首先要明白想讓這個程序做一些什么事?以我的這道練習題為例,我想讓它完成“添加學生”、“更新學生基本信息”、“刪除學生信息”、“按照成績排序”和“根據學號判斷學生是否存在並查找學生”五項功能。
其次,要將自己的想法通過編程實現。基於以上需求,我設計了一個Student類(包含以上三項信息)和一個Manage類(實現各種功能):
最后,設計一個測試類,通過調用構造函數驗證程序。如果出現bug再進行調試修改。
- 命令行實現:
1、添加學生
2、更新學生基本信息
3、刪除學生信息
4、按照成績排序
5、根據學號判斷學生是否存在並查找學生
6、退出程序
- IDEA調試:
比如想要了解courseSort()
方法的執行情況,可以在該行設置斷點,單擊Step Over
(或快捷鍵F8)執行完該方法,並查看執行結果:
如果對該方法有疑問,可以在該行設置斷點,單擊Step Into
(或快捷鍵F7)進入內部:
即可查看該方法的詳細執行過程。
三、實驗過程中遇到的問題
-
『問題一』:第一次設計的代碼只能完成按成績排序的功能,功能非常單一,使用價值不高。感謝婁老師的指點,經修改目前代碼可以完成
添加學生
、更新學生基本信息
、刪除學生信息
、按照成績排序
和根據學號判斷學生是否存在並查找學生
五項功能。程序還有很大的提升空間,可根據實際需要繼續開發程序功能。 -
『問題二』:在命令行下運行出現了中文亂碼問題,是因為windows下默認的編碼方式與IDEA設置的編碼方式不同。將編碼方式轉為UTF-8即可成功運行。
- 『問題三』:
馬超同學針對我編寫的“成績管理系統”提出疑問:如果有非法輸入如何處理?
我的程序的確疏忽了異常處理,鑒於我的測試類用到了Scanner()
方法,查詢API文檔可知這個方法可能拋出IOException
異常,另外輸入格式與期望格式不匹配時還會拋出InputMismatchException
異常,所以應添加 try{...}catch (Exception e) {System.out.println(e);}
捕捉異常。
如果輸入不合法,會出現以下異常提示:
感謝馬超同學的建議!
四、實驗體會與總結
“紙上得來終覺淺,絕知此事要躬行。”看書看了這么久,代碼也按照書上敲了近千行,而自己究竟掌握了多少呢?實驗給了我們一個將課本理論付諸實踐,並檢驗自我的機會。
這次實驗題目比較簡單,不過要想達到對代碼“信手拈來”的程度並不容易。所以說,敲代碼前先在腦海中構建好程序框架,就顯得尤為重要。先構思好想干什么,再一步一步用代碼實現自己的想法,最后有余力還可以優化程序,提升程序友好度,增加功能等等,我認為這才是編寫一個程序完整的步驟。
步驟 | 耗時 | 百分比 |
---|---|---|
需求分析 | 3min | 4% |
設計 | 10min | 13% |
代碼實現 | 45min | 62% |
測試 | 5min | 7% |
分析總結 | 10min | 14% |