



























java算法计算一元一次方程是昨年10月写的了,最近想写写算法就把它整理出来了。
核心思想是将方程转化为:aX+b = cX+d 的形式再进行计算,转化的思想是根据符号的优先级一层一层的分割。分割规则是先把+号能分割完的分割完,再把-号能分割完的分割完,最后分割*/号,不能从括号里面分割。具体过程如下:
方程:-3-12+2*(-7+5x)=-3-4+3*(6x+9)+10*3-20-30,以左边为例:
先根据 + 号 分割,结果为:
左:-3-12 + 右: 2*(-7+5x)
左边只能根据 - 号分割,右边根据*号分割
左:左:-3 - 右:12 + 右: 左:2 * 右:-7+5x
左边,右边都是 aX+b 形式直接计算,-3也是aX+b形式(a=0,b=-3)
左:-15 + 右:-14+10x
最后左侧将转化为:10x-29
完整代码如下:
/**
* Created by LL on 2016/10/13.
*/
public class yiyuanyicifangcheng {
public static void main(String[] args) {
String string="-3-12+2*(-7+5x)=-3-4+3*(6x+9)+10*3-20-30";
double result = calculate(string);
System.out.println("计算结果:x = "+result);
}
/**
* 此类方法用于将字符串化为: aX+b 结构,结果返回a,b
* @param str:需要计算的字符串
*/
public static Result translate(String str) {
str=deleteKH(str);
char[] chars = str.toCharArray();
运行结果:
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。