用Java编写一个计算器
引言
计算器是人们生活中经常使用的工具之一,它可以进行简单的数学计算,并且在计算过程中提供了便利的用户界面。在本文中,我们将使用Java编写一个简单的计算器,以帮助读者更好地理解计算器的工作原理和Java编程语言的使用。
计算器的基本功能
一个基本的计算器通常具有以下功能:
- 实现基本的四则运算(加法、减法、乘法和除法);
- 支持多位数的输入和计算;
- 具有界面,使用户能够输入算术表达式并查看计算结果。
实现思路
为了实现这个计算器,我们将采用面向对象的思想,将其分解为多个类,每个类负责完成特定的功能。下面是我们计划使用的类及其职责:
Calculator
类:它是整个计算器的入口类,负责接收用户输入的算术表达式,并调用其他类完成计算。Expression
类:它负责将用户输入的算术表达式解析成可计算的形式,并提供方法进行计算。Operator
类:它是一个枚举类,定义了四种基本运算符(加法、减法、乘法和除法)。Number
类:它表示一个数字,用于保存和操作用户输入的数字。UI
类:它负责与用户交互,接收用户输入和显示计算结果。
类之间的关系
erDiagram
Calculator }|..|{ Expression : "1" - "1" 解析算术表达式
Calculator }|..|{ UI : "1" - "1" 与用户交互
Expression }|--|{ Operator : "1" - "n" 使用运算符
Expression }|--|{ Number : "1" - "n" 使用数字
代码示例
Calculator类
public class Calculator {
public static void main(String[] args) {
// 创建UI对象
UI ui = new UI();
// 获取用户输入的算术表达式
String expression = ui.getInput();
// 创建Expression对象
Expression exp = new Expression(expression);
// 计算表达式结果
double result = exp.calculate();
// 显示计算结果
ui.displayResult(result);
}
}
Expression类
import java.util.ArrayList;
public class Expression {
private String expression;
private ArrayList<Operator> operators;
private ArrayList<Number> numbers;
public Expression(String expression) {
this.expression = expression;
operators = new ArrayList<>();
numbers = new ArrayList<>();
parseExpression();
}
private void parseExpression() {
// 解析算术表达式,初始化operators和numbers列表
}
public double calculate() {
// 根据operators和numbers列表中的值进行计算,返回计算结果
}
}
Operator类
public enum Operator {
ADDITION("+"),
SUBTRACTION("-"),
MULTIPLICATION("*"),
DIVISION("/");
private final String symbol;
Operator(String symbol) {
this.symbol = symbol;
}
public String getSymbol() {
return symbol;
}
}
Number类
public class Number {
private double value;
public Number(double value) {
this.value = value;
}
public double getValue() {
return value;
}
}
UI类
import java.util.Scanner;
public class UI {
private Scanner scanner;
public UI() {
scanner = new Scanner(System.in);
}
public String getInput() {
System.out.print("请输入算术表达式:");
return scanner.nextLine();
}
public void displayResult(double result) {
System.out.println("计算结果是:" + result);
}
}
序列图
sequenceDiagram
participant 用户
participant 计算器
participant UI
participant Expression
participant Operator
participant Number
用户 ->> 计算器: 输入算术表达式
计算器 ->> UI: 获取用户输入
UI ->> 计算器: 返回用户输入的算术表达式
计算器 ->> Expression: 创建Expression对象,并传入算术表达式