美文网首页
计算器的功能

计算器的功能

作者: 今天也要努力呀y | 来源:发表于2019-11-17 19:34 被阅读0次
package Leecode;

import java.util.ArrayDeque;
import java.util.Deque;

public class Calculator {
    public static double calculate(String s) {
        int n = s.length();
        if (n == 0) return 0;
        double temp = 0;
        double result = 0;
        Character sign = '+';
        Deque<Double> deque = new ArrayDeque<>();
        for (int i = 0; i < n; i++) {
      //小数点
            if (s.charAt(i) == '.') {
                int j = i + 1;
                double temp1 = 0;
                while (j < n && Character.isDigit(s.charAt(j))) {
                    temp1 = temp1 * 10 + s.charAt(j) - '0';
                    //System.out.println(temp1);
                    j++;
                }
                int length = j - i - 1;
                temp = temp + temp1 / Math.pow(10, length);
                //System.out.println(temp);
                if (j != n) i = j;
                else {
                    i = j - 1;
                    if (sign == '+') {
                        deque.push(temp);
                    } else if (sign == '-') {
                        deque.push(-temp);
                    } else if (sign == '*') {
                        deque.push(deque.pop() * temp);
                    } else if (sign == '/') {
                        deque.push(deque.pop() / temp);
                    }
                    break;
                }
            }
            if (i < n && Character.isDigit(s.charAt(i))) {
                temp = temp * 10 + s.charAt(i) - '0';
            }
        //考虑运算一个负数 如2*-2.5,这时候的-就不能看成运算符
            if (i<n-1&&i>0&&s.charAt(i)=='-' &&!Character.isDigit(s.charAt(i-1))){
                int j =i+1;
                double temp1 = 0;
                while (j < n && (Character.isDigit(s.charAt(j))||s.charAt(j)=='.')) {
                    while (j<n&&Character.isDigit(s.charAt(j))) {
                        temp1 = temp1 * 10 + s.charAt(j) - '0';
                        j++;
                    }
                    //System.out.println(temp1);
                    if (j<n-1&&s.charAt(j)=='.'){
                        int k = j + 1;
                        double temp2 = 0;
                        while (k < n && Character.isDigit(s.charAt(k))) {
                            temp2 = temp2 * 10 + s.charAt(k) - '0';
                            //System.out.println(temp1);
                            k++;
                        }
                        int length = k-j-1;
                        temp1 = temp1 + temp2/Math.pow(10,length);
                        //System.out.println(temp1);
                        j = k;
                    }
                }
                temp = -temp1;
                i = j-1;
            }
          //运算符  
            if (i < n && (!Character.isDigit(s.charAt(i))) || i == n - 1) {
                //System.out.println(sign);
                if (sign == '+') {
                    deque.push(temp);
                } else if (sign == '-') {
                    deque.push(-temp);
                } else if (sign == '*') {
                    deque.push(deque.pop() * temp);
                } else if (sign == '/') {
                    deque.push(deque.pop() / temp);
                }
                sign = s.charAt(i);
                temp = 0;
            }
        }
      //加起来的得数
        while (!deque.isEmpty()) {
            //System.out.println(deque.peek());
            result += deque.pop();
        }
        return result;
    }
}

测试结果:


image.png
image.png

健壮性也很强,可以加负数


image.png
image.png

相关文章

  • iOS简单项目 — 计算器

    计算器所需求功能 计算器所用模式:MVC计算器所用语言:Swift计算器所参考课程:斯坦福 第一步:构造计算器界面...

  • 房贷计算器

    最近房产版升级,需要重新制作房贷计算器的功能,主要参考了 房天下房贷计算器和安居客房贷计算器,两大平台的计算器。 ...

  • JavaScript制作简单计算器

    JavaScript经典小项目——制作简单的计算器功能使用JS完成一个简单的计算器 功能。实现2个输入框中输入整...

  • 发彩BMI技术支持

    颜值高 易用的BMI计算器 这是一款界面清新,功能实用的,免费的BMI计算器。排除复杂无用的功能,准确反应你的身体...

  • 项目-HTML,CSS,JavaScript计算器

    整个计算器分为四部分:1.构建计算器的框架;2.为计算器添加样式;3.实现计算、回删、清零功能;4.为计算器添加日...

  • 计算器的功能

    测试结果: 健壮性也很强,可以加负数

  • 封装一个计算器函数

    """封装一个计算器函数计算器功能:仅支持加减乘除运算转载https://blog.csdn.net/a97195...

  • 计算器教学反思

    这节课的教学目标为初步认识计算器,了解计算器面板上的按键名称和基本功能。会使用计算器进行大数的一、两步连续...

  • 4款小众却强大的黑科技APP,功能非常不简单,请大家低调使用

    1、程序员计算器 程序员计算器是一款非常特殊的黑科技计算器,功能非常特别,主要针对程序员。整个界面简洁操作也很方便...

  • Linux中计算器和万年历

    Linux中计算器: 在Linux中,可以在终端中直接通过输入命令 bc 来调用Linux自带的计算器功能 如果要...

网友评论

      本文标题:计算器的功能

      本文链接:https://www.haomeiwen.com/subject/kvqmictx.html