this.result
來返回計算結果,經過this.flag
返回判斷是否合法的結果;getResult()
和isFlag()
。java.util.Scanner;
,提供用戶輸入的功能;class Calculator
、class CalculatorDemo
和class CalculatorTest
;public class Calculator { private double result; private boolean flag = true; public void add(double a, double b){ this.result = a + b; } public void subtract(double a, double b){ this.result = a - b; } public void multiply(double a, double b){ this.result = a * b; } public void divide(double a, double b){ if(b != 0) this.result = a / b; else this.flag = false; } public double getResult(){ return result; } public boolean isFlag(){ return flag; } }
import java.util.Scanner; public class CalculatorDemo { public static void main(String[] args) { Scanner scanner1 = new Scanner(System.in); Scanner scanner2 = new Scanner(System.in); Scanner scanner3 = new Scanner(System.in); Calculator calculator = new Calculator(); System.out.print("First Number: "); double a = scanner1.nextDouble(); System.out.print("Calculate Type: "); String type = scanner2.next(); System.out.print("Second Number: "); double b = scanner3.nextDouble(); switch (type){ case "+": calculator.add(a, b); System.out.println(calculator.getResult()); break; case "-": calculator.subtract(a, b); System.out.println(calculator.getResult()); break; case "*": calculator.multiply(a, b); System.out.println(calculator.getResult()); break; case "/": calculator.divide(a, b); if(calculator.isFlag()) { System.out.println(calculator.getResult()); break; } default: System.out.println("Error!"); } } }
public class CalculatorTest { public static void main(String[] args) { final double TEST1 = 2.7; final double TEST2 = 0; boolean flag = true; Calculator calculator = new Calculator(); calculator.add(TEST1,TEST2); if(calculator.getResult() != TEST1) { flag = false; System.out.println("test failed 1!"); } calculator.subtract(TEST1,TEST2); if(calculator.getResult() != TEST1){ flag = false; System.out.println("test failed 2!"); } calculator.multiply(TEST1,TEST2); if(calculator.getResult() != TEST2) { flag = false; System.out.println("test failed 3!"); } calculator.divide(TEST1,TEST2); if(calculator.isFlag() != false) { flag = false; System.out.println("test failed 4!"); } if(flag) System.out.println("test passed!"); } }
Ctrl+Shift+F10
,便可編譯運行;不過經過幫助同窗,學到了斷點調試、單步執行等方法,可讓JVM只編譯你選中的部分,對其中的語法錯誤能夠一句一句糾錯,使得發現解決問題的時間大大提升,在此以前,只是按一下編譯的按鈕,出現錯誤,逐句查找,比較費時費力。
html
在編譯時由於該三個類鈞屬於包lab01下,因此編譯時不能直接javac *.java
,這樣雖然編譯能夠經過,但執行的時候不管輸入如下哪一種代碼都會出現以下報錯,提示找不到或者沒法加載主類Calculator:
java
因此在編譯CalculatorDemo.java文件時,須在命令行下輸入如下指令:javac -d . *.java
,這樣,JVM會把編譯生成的.class文件放在文件夾lab01中,執行時輸入指令:java lab01.CalculatorDemo
或java lab01.CalculatorTest
便可運行以上文件。
算法
divide()
函數中加一些別的「特徵」,來告訴調用者除法輸入參數不合法!因此考慮到了經常使用的boolean型變量flag,先判斷除數是否爲0,若是爲0,則再也不進行除法運算,使flag置爲flase;若是不爲0,繼續除法運算,flag爲初始化的值true。這樣調用者能夠經過isFlag()
函數的返回值來判斷是否輸入有誤。javac -d
指令,這樣編譯的.class文件才能被java指令執行。javac -d . *.java
指令。步驟 | 耗時 | 百分比 |
---|---|---|
需求分析 | 10min | 10% |
設計 | 20min | 20% |
代碼實現 | 40min | 40% |
測試 | 15min | 15% |
分析總結 | 15min | 15% |