用Java实现一个加法和乘法的过程

需求:

边输入数据,边得到计算值。

比如String = "1+2*3+4";

输出:1 3 7 11

Java代码实现:

@Test

public void testAdd() {

//测试数据

    String str ="1+3+12*22";

char[] chars = str.toCharArray();

//记录前数据

    StringBuffer sb1 =new StringBuffer();

//记录后数据

    StringBuffer sb2 =new StringBuffer();

Integer result =0;

//保存乘号前面的值

    Integer iniSb =0;

//相乘值

    Integer cenNum;

//保存相乘值结果

    Integer iniCen;

//运算符号标识

    boolean flag =true;

for (int i =0; i < chars.length; i++) {

if (chars[i] >='0' && chars[i] <='9') {

if (flag) {

if (sb1.length() >0) {

//如果前面有数据则先减去

                    result -= Integer.parseInt(sb1.toString());

}

sb1.append(chars[i]);

result += Integer.parseInt(sb1.toString());

}else {

if (sb2.length() >0) {

//如果前面有数据则先减去

                    result -= (iniSb * Integer.parseInt(sb2.toString()));

}

sb2.append(chars[i]);

if (sb2.length() >1) {

//将sb1恢复初始值

                    sb1.setLength(0);

sb1.append(iniSb);

}

if (sb1.length() >0 && sb2.length() >0) {

cenNum = Integer.parseInt(sb1.toString());

//中间值

                    iniCen= cenNum * Integer.parseInt(sb2.toString());

sb1.setLength(0);

sb1.append(iniCen);

result += iniCen;

}

}

System.out.println(result);

}else if (chars[i] =='+') {

flag =true;

sb1.setLength(0);

sb2.setLength(0);

}else if (chars[i] =='*') {

//改变标识状态

            flag =false;

//初始化乘号前面的值

            iniSb = Integer.parseInt(sb1.toString());

//初始化称号后面的值

            sb2.setLength(0);

//将值改为未进行乘号运算时的值

            result -= iniSb;

}else {

continue;

}

}

}

本方法只计算加法和乘法,也可进行计算。

程序测试:

String str = "1*22*33";

输出结果:


程序测试:

String str = "11*22*33";

输出结果:


程序测试:

String str = "11+22+33";

输出结果:


程序测试:

String str = "21+12*13*15+16";

输出结果:


以上是测试结果,保证输入是合法的,如果程序有bug,欢迎指正。

你可能感兴趣的:(用Java实现一个加法和乘法的过程)