📄 calculate.java
字号:
package calculate;
public class Calculate {
public static final String ERROR_DIVIDE_ZERO = "除数不能为零.";
public static final String ERROR_FUNCTION_INPUT = "函数输入无效.";
public static final String DEFAULT_SHOW_TEXT = "0.";
private double result = 0.0D;
private double lastValue = 0.0D;
private String showText = "0.";
private String lastInput = "";
private String lastOperation = "";
private boolean isFloat = false; // 标明showText是否是小数
public Calculate() {
inital();
}
public void doCalculate() {
doCalculate(true);
}
public void doCalculate(boolean updatelastValue) {
if (updatelastValue) {
try {
this.lastValue = Double.parseDouble(this.showText);
} catch (NumberFormatException e) {
this.lastValue = 0.0D;
e.printStackTrace();
}
}
if ("+".equals(this.lastOperation)) {
this.result += this.lastValue;
} else if ("-".equals(this.lastOperation)) {
this.result -= this.lastValue;
} else if ("*".equals(this.lastOperation)) {
this.result *= this.lastValue;
} else if ("/".equals(this.lastOperation)) {
if (this.lastValue == 0) {
this.showText = ERROR_DIVIDE_ZERO;
return;
}
this.result /= this.lastValue;
} else {
this.result = this.lastValue;
}
if (this.result - (int) this.result < 0.00000001) {
this.showText = ((int) this.result) + ".";
} else {
this.showText = this.result + "";
}
}
public String run(String input) {
if (ERROR_DIVIDE_ZERO.equals(this.showText)
|| ERROR_FUNCTION_INPUT.equals(this.showText)) {
if (!"C".equals(input)) {
return this.showText;
}
}
OperationFactory.getOperation(input).execute(this);
this.lastInput = input;
return this.showText;
}
public void inital() {
this.result = 0.0D;
this.lastValue = 0.0D;
this.showText = "0.";
this.lastInput = "";
this.lastOperation = "";
this.isFloat = false;
}
public double getResult() {
return result;
}
public void setResult(double result) {
this.result = result;
}
public double getLastValue() {
return lastValue;
}
public void setLastValue(double lastValue) {
this.lastValue = lastValue;
}
public String getShowText() {
return showText;
}
public void setShowText(String showText) {
this.showText = showText;
}
public String getLastInput() {
return lastInput;
}
public void setLastInput(String lastInput) {
this.lastInput = lastInput;
}
public String getLastOperation() {
return lastOperation;
}
public void setLastOperation(String lastOperation) {
this.lastOperation = lastOperation;
}
public boolean isFloat() {
return isFloat;
}
public void setFloat(boolean isFloat) {
this.isFloat = isFloat;
}
public static void main(String[] args) {
Calculate calculate = new Calculate();
System.out.println(calculate.run("1"));// 1
System.out.println(calculate.run("2"));// 12
System.out.println(calculate.run("+"));// 12
System.out.println(calculate.run("+"));// 12
System.out.println(calculate.run("3"));// 3
System.out.println(calculate.run("-"));// 15
System.out.println(calculate.run("5"));// 5
System.out.println(calculate.run("="));// 10
System.out.println(calculate.run("="));// 5
System.out.println();
System.out.println(calculate.run("C"));// 0
System.out.println(calculate.run("1"));// 1
System.out.println(calculate.run("."));// 1
System.out.println(calculate.run("1"));// 1.1
System.out.println(calculate.run("+"));// 1.1
System.out.println(calculate.run("2"));// 2
System.out.println(calculate.run("="));// 3.1
System.out.println(calculate.run("+"));// 3.1
System.out.println(calculate.run("3"));// 3
System.out.println(calculate.run("="));// 6.1
System.out.println();
System.out.println(calculate.run("C"));// 0
System.out.println(calculate.run("1"));// 1
System.out.println(calculate.run("/"));// 1
System.out.println(calculate.run("0"));// 0
System.out.println(calculate.run("="));// 除数不能为零.
System.out.println(calculate.run("1"));// 除数不能为零.
System.out.println(calculate.run("+"));// 除数不能为零.
System.out.println(calculate.run("."));// 除数不能为零.
System.out.println(calculate.run("C"));// 0
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -