1625: 方程求解器
题目描述
- 所有方程都能通过统一的接口被求解,调用者无需关心具体方程类型。
- 新增方程类型时,无需修改现有求解逻辑的核心代码。
UML如下:其中:
Equation是抽象类,show()方法显示方程,solve()方法解方程
LinearEquation类继承了Equation,表示一元一次方程形如ax+b=0,a、b为系数
QuadraticEquation类继承了Equation,表示一元二次方程形如ax^2+bx+c=0,a、b、c为系数
EquationService类为解方程业务类,solveEquation()方法用于求解不同形式的方程。
Main类中的主方法代码如下:
Scanner s=new Scanner(System.in);
Equation equation;
EquationService equationService;
equation=new LinearEquation(s.nextDouble(),s.nextDouble());//一元一次方程
equationService=new EquationService(equation);
equationService.solveEquation();
equation=new QuadraticEquation(s.nextDouble(),s.nextDouble(),s.nextDouble());//一元二次方程
equationService=new EquationService(equation);
equationService.solveEquation();
输入格式
两行,测试数据保证每行的第一个数都不为0:
第一行为2个小数
第二行为3个小数
输出格式
四行:
第1行为一元一次方程的形式
第2行为根(2位小数)
第3行为一元二次方程的形式
第3行为根(2位小数),如果有两个根,用空格分开,先大后小;如果没有实根,显示"no roots"
输入样例1 复制
2.5 4
1 4 4
输出样例1 复制
2.5x+4.0=0
-1.60
1.0x^2+4.0x+4.0=0
-2.00
输入样例2 复制
7.1 10
3 4 5
输出样例2 复制
7.1x+10.0=0
-1.41
3.0x^2+4.0x+5.0=0
no roots