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% |