北京電子科技學院(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)時間:
實驗內容、步驟與體會
1、實驗內容:
使用JDK和IDE編譯、運行簡單的Java程序,
題目: 實現四則運算,並進行測試。
程序設計思路:
四則運算顧名思義,就是加、減、乘、除四種運算,由於一開始要有輸入,因此我就調用了Scanner實例,當用戶選擇不一樣運算時,我打算用switch與case語句來實現,這就是我一開始憑感受想到的東西,因而我作了個比較基礎的:先讓用戶輸入兩個數,而後選擇一種運算方式,而後得出結果,就這麼簡單。
將這兩個數分別定義成雙精度浮點型數據,分別爲a和b。接着就是選擇運算方式,用switch與case語法來實現,而後進入switch的case裏面,直接System.out.println()出相應的式子就能夠了。java
步驟 | 耗時 | 百分比 |
需求分析 | 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:一、ADD 二、MINUS 三、MULTIPLY 四、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");
}
}
}
}數據庫
運行結果爲:編程
2、調試代碼(1):一開始確實編譯成功了,不過忽然發現沒有考慮到除數爲0的狀況,這在邏輯上是不嚴謹的。因而在除法那塊加上了判斷除數是否爲0,最開始不知道什麼是斷點,也沒有用斷點來調試,不事後來百度知道了在eclipse中設置斷點的方法:在方法內部選擇要打斷點的代碼,雙擊,左邊會出現一個點。而後在工具欄中找debug,點擊後也許會出現切換窗口的對話框,點擊YES,通常按F8來一步步調試。網絡
3、實驗體會(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('*')){app
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("沒法識別該運算符");
}
}
}
運行結果:
eclipse
調試代碼(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的調用,雖然中途有一些問題,但最後也成功了。之後不止要多敲代碼,還要多「主動」的敲代碼,這纔是重點,不要盲目的抄書,要把書上的東西最終都變成本身的!編輯器