北京電子科技學院(besti)實驗報告
課程:Java程序設計
班級:1453
指導教師:婁嘉鵬
實驗日期:2016.04.08
實驗名稱:Java開發環境的熟悉(Linux + Eclipse)
實驗內容:
1.使用JDK編譯、運行簡單的Java程序;
2.使用Eclipse 編輯、編譯、運行、調試Java程序。
實驗目的與要求:
1.沒有Linux基礎的同學建議先學習《Linux基礎入門(新版)》《Vim編輯器》 課程;
2.完成實驗、撰寫實驗報告,實驗報告模板見QQ群,注意實驗報告重點是運行結果,遇到的問題(工具查找,安裝,使用,程序的編輯,調試,運行等)、解決辦法(空洞的方法如“查網絡”、“問同學”、“看書”等一律得0分)以及分析(從中可以得到什么啟示,有什么收獲,教訓等);
3.實驗報告中統計自己的PSP(Personal Software Process)時間:
實驗內容、步驟與體會
一、實驗內容:
使用JDK和IDE編譯、運行簡單的Java程序,
題目: 實現四則運算,並進行測試。
程序設計思路:
四則運算顧名思義,就是加、減、乘、除四種運算,因為一開始要有輸入,所以我就調用了Scanner實例,當用戶選擇不同運算時,我打算用switch與case語句來實現,這就是我一開始憑感覺想到的東西,於是我做了個比較基礎的:先讓用戶輸入兩個數,然后選擇一種運算方式,然后得出結果,就這么簡單。
將這兩個數分別定義成雙精度浮點型數據,分別為a和b。接着就是選擇運算方式,用switch與case語法來實現,然后進入switch的case里面,直接System.out.println()出相應的式子就可以了。
步驟 | 耗時 | 百分比 |
需求分析 | 30分鍾 | 16% |
設計 | 1小時 | 33% |
代碼實現 | 30分鍾 | 16% |
測試 | 30分鍾 | 16% |
分析總結 | 30分鍾 | 16% |
程序代碼:
package field;
import java.util.Scanner;
public class Main {
while(true)
{
System.out.println("PLEASE INPUT TWO NUMBERS");
Scanner scanner =new Scanner(System.in);
Double a=scanner.nextDouble();
Double b=scanner.nextDouble();
System.out.println("PLEASE CHOOSE:1、ADD 2、MINUS 3、MULTIPLY 4、DIVIDE");
int choice=scanner.nextInt();
switch (choice) {
case 1:
System.out.print("結果為");
System.out.println(a+b);
break;
case 2:
System.out.print("結果為");
System.out.println(a-b);
break;
case 3:
System.out.print("結果為");
System.out.println(a*b);
break;
case 4:
if(b==0)System.out.println("ERROR");
System.out.print("結果為");
System.out.println(a/b);
break;
default:System.out.println("ERROR");
}
}
}
}
運行結果為:
二、調試代碼(1):一開始確實編譯成功了,不過突然發現沒有考慮到除數為0的情況,這在邏輯上是不嚴謹的。於是在除法那塊加上了判斷除數是否為0,最開始不知道什么是斷點,也沒有用斷點來調試,不過后來百度知道了在eclipse中設置斷點的方法:在方法內部選擇要打斷點的代碼,雙擊,左邊會出現一個點。然后在工具欄中找debug,點擊后也許會出現切換窗口的對話框,點擊YES,一般按F8來一步步調試。
三、實驗體會(1):實驗課下來以后,覺得自己之前編的那個四則運算確實太基礎太簡單了,沒有挑戰性,不大滿意。又因為自己想嘗試一些新的東西,所以以玩的心態,在原有代碼的思想上做了一些改進。首先先判斷用戶輸入的數字是否符合運算要求,如果不考慮這一點的話萬一用戶不小心輸入了錯誤的數字,那么就會導致運算發生錯誤。這讓我想到了第八章的知識,使用try、catch語法,如果發生錯誤,執行流程會跳離錯誤發生點,顯示更友好的錯誤信息。其次,主程序依舊用了循環。這次整個程序運用了do while語法,使整個程序可以不斷地循環,避免用戶需要不斷編譯程序,在這個循環中,用戶能夠根據自己的需要選擇繼續還是結束,給了用戶更多的選擇空間。
程序代碼:
package field;
import java.util.Scanner;
import java.text.DecimalFormat;
public class Zhidao {
public static void main(String[] args) {
String condition = "";
Zhidao zhidao = new Zhidao();
do{
Scanner scanner = new Scanner(System.in);
try{
System.out.print("輸入第一個數:");
double x = scanner.nextDouble();
System.out.print("輸入第二個數:");
double y = scanner.nextDouble();
System.out.print("輸入運算符:");
String s = scanner.next();
char z = s.charAt(0);
zhidao.yunsuan(x, y, z);
}catch(Exception e)
{
System.out.println("請輸入正確的數據!");
}
System.out.print("是否繼續?continue:繼續,任意字符:結束");
condition = scanner.next();
}while("continue".equals(condition));
}
public static void yunsuan(double x,double y,Character z){
DecimalFormat r=new DecimalFormat();
r.applyPattern("#0.00");
if(z.equals('+')){
System.out.println(x+"+"+y+"=" + r.format((x+y)));
} else if(z.equals('-')){
System.out.println(x+"-"+y+"=" + r.format((x-y)));
} else if(z.equals('*')){
System.out.println(x+"*"+y+"=" + r.format((x*y)));
} else if(z.equals('/')){
if(y==0)
{
System.out.println("被除數不能為0");
}
else{
System.out.println(x+"/"+y+"=" + r.format((x/y)));
}
}
else{
System.out.println("無法識別該運算符");
}
}
}
運行結果:
調試代碼(2):由於對Java的知識掌握得並不是爐火純青,所以剛開始只是有好的設計思路但卻不會設計,后來就網上查閱,又看了書上的相應的程序,整理思緒,一步步逐漸實現代碼。我最開始就在類那里出現了問題, 程序中顯示的是
>
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous tree type:
at cc.openhome.Zhidao.main(Zhidao.java:11)
C:\Users\Administrator\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
后來才發現原來是沒有數據庫操作,哎,還是自己主動動手編程太少了,這點意識都沒有。后來加上了數據庫操作,程序就跑起來了。
實驗體會(2):本次實驗是第一次實驗,相對來說我抽的題目——四則運算還比較簡單,還好這次的程序代碼沒有太大的問題,自己都能夠解決。但是不得不承認,我感覺我還是很缺乏Java的實戰經驗,第一次的代碼沒啥難度,思路也清晰易懂,第二次嘗試了一些不一樣的東西,比如try、catch的調用,雖然中途有一些問題,但最后也成功了。以后不止要多敲代碼,還要多“主動”的敲代碼,這才是重點,不要盲目的抄書,要把書上的東西最終都變成自己的!