四则运算算法

徘徊边缘 提交于 2020-02-12 13:18:30

四则运算算法

为了忘却的纪念;

一个表达式 1+2*3可以写成:
a+b*1+2*3,其中a=0,b=1;
查看每一个数字后面的符号,
如果是+号,计算出a, 把b设置为1;
如果是*号,a保留不变,计算b;
最后结果 就是 a+b*temp;

 

package com.stono;

/**
 * @author stono
 */
public class Calc01 {
    public static void main(String[] args) {
        String str = "1+6/2";
        char[] chars = str.toCharArray();
        double a = 0, b = 1, temp = 0;
        boolean div = false;
        for (char aChar : chars) {
            if (Character.isDigit(aChar)) {
                temp = Double.parseDouble(String.valueOf(aChar));
                if(div){
                    temp = 1/temp;
                }
            } else {
                div = false;
                String calc = String.valueOf(aChar);
                if ("+".equals(calc)) {
                    a = a + b * temp;
                    b = 1;
                }
                if ("-".equals(calc)) {
                    a = a + b * temp;
                    b = -1;
                }
                if ("*".equals(calc)) {
                    b = b * temp;
                }
                if("/".equals(calc)){
                    b = b*temp;
                    div = true;
                }
            }
        }
        System.out.println(a + b * temp);

    }
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!