java 四则运算

 原理:

取得字符串中最后一个“)”,然后找到离他最近的一个“(”,取得两个括号之前的字符串,

 

  1. /**
  2.   * 拆分出当前字符串中最内层括号内数据
  3.   */
  4.  protected String reelOffBracketData(String args, String leftB, String rightB) {
  5.   int leftBracket;
  6.   int rightBracket;
  7.   String temp = args;
  8.   leftBracket = temp.lastIndexOf(leftB); // 获取最后一个左括号
  9.   String newStr;
  10.   if (leftBracket == -1) { // 如何没有左口号 返回数据
  11.    return temp;
  12.   }
  13.   rightBracket = temp.substring(leftBracket).indexOf(rightB) + 1
  14.     + temp.substring(0, leftBracket).length(); // 获取又括号
  15.   if (rightBracket > temp.length()) { // 如果又获取的又括号位置 大于字符串最大长度
  16.    rightBracket = temp.length(); // 又括号位置 等于字符串最后一个字符的位置
  17.   }
  18.   newStr = temp.substring(leftBracket, rightBracket); // 根据括号的位置,借取括号内数据
  19.   ArgsList al = new ArgsList(leftBracket, rightBracket);
  20.   super.ec.setAttr(newStr, al);
  21.   return newStr;
  22.  }

然后拆开字符串运算符,得到每个数字 保存到LIST中

/

  1. **
  2.   * 把括号内数据 按照从左到右顺序依次保存在LIST中
  3.   */
  4.  public void symbolParse(List list, String args) {
  5.   String temp = "";
  6.   for (int i = 0; i < args.length(); i++) {
  7.    // 如何获取CHAR 为数字或者"." 默认为一个数字并且未完成的数组
  8.    if (Character.isDigit(args.charAt(i)) || args.charAt(i) == '.'
  9.      || args.charAt(i) == CalculateUtil.MINUS_OPERATOR.charAt(0)) {
  10.     temp = temp.trim() + args.charAt(i); // 把临时获取数字的字符串连接起来
  11.    } else {// 如何获取的CHAR 不为数字
  12.     if ("".equals(temp)) {// 当TEMP为空时候
  13.      temp = "".trim() + args.charAt(i); // 把获取CHAR 保存到TEMP中
  14.     }
  15.     list.add(temp);
  16.     list.add("".trim() + args.charAt(i));
  17.     temp = "";
  18.    }
  19.    if (args.length() - 1 == i) { // 如何获取的获取到了最后一个字符 直接保存TEMP到LIST中
  20.     list.add(temp);
  21.     temp = "";
  22.    }
  23.   }
  24.  }

对LIST中数据从零位开始计算,得到结果即可

 

提供原文件 大家帮我改改 提高下效率,计算是使用责任链模式写的

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值