Java计算器核心算法代码实现

在进行一个表达式的计算时,先将表达式分割成数字和字符串然后利用出入栈将分割后的表达式进行中缀转后缀,再将后缀表达式进行计算得到结果(思想在上一篇写过)现在贴下Java语言的代码实现。(学习Java时间不长所以可能会有很多不足的地方,我会改进也欢迎大神可以给我一些意见和建议~谢谢啦)

我将这部分分成三个方法完成功能,并在getResult方法调用(getResult方法被主方法调用)

private String getResult(String str) {
    //分割
    String[] Str = segment(str);
    //中缀转后缀
    String newStr = infToSuf(Str);
    //后缀计算
    String result = sufToRes(newStr);
    return sufToRes(result);
  }
1.字符串分割,为避免在TextView上显示带空格删除时不方便而且显示屏就那么大占地方,录入时的字符串中没有空格然后就手动分割了
private static String[] segment(String str) {
  String[] exp = new String[str.length()+1];
  //找最近的索引并截取字符串
  int l = str.length();
  for(int i = 0;i < l+1;i++) {
    int index;
    int[] ind = new int[6];
    ind[0] = str.indexOf('+');
    ind[1] = str.indexOf('-');
    ind[2] = str.indexOf('*');
    ind[3] = str.indexOf('/');
    ind[4] = str.indexOf('(');
    ind[5] = str.indexOf(')');
    if(ind[1] == 0) {
      Arrays.sort(ind);
      int t;
      for(t = 0;t <6;t++) {
        if(ind[t] >= 0)
          break;
      }
      int r = ind[t+1];
      exp[i] = str.substring(0,r);
      i++;
      exp[i] = str.substring(r,r+1);
      str = str.substring(r+1);
    }else if(((ind[1]-ind[4]) == 1) && (ind[4]=
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值