用Java实现简单的四则运算的运算器

简介: 用Java实现简单的四则运算的运算器

用Java通过栈实现简单的四则运算的运算器

// package com.threefiree.algotithm.leetcode.stack.test227;
import java.net.Socket;
import java.util.ArrayDeque;
import java.util.Deque;
/**
 * @author zhouyanxiang
 * @Date 2021-01-2021/1/27-16:03
 * @Title 227. 基本计算器 II
 */
public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        String s = "3-2*2 + 10";
        int calculate = solution.calculate(s);
        System.out.println(calculate);
    }
    public int calculate(String s) {
        Deque<Integer> deque = new ArrayDeque<>();
        char lastOp = '+';
        char[] ch = s.toCharArray();
        int len = ch.length;
        for (int i = 0; i < len; i++) {
            if (ch[i] == ' ') {
                continue;
            }
            if (Character.isDigit(ch[i])) {
                int tempNum = ch[i] - '0';
                while (++i < len && Character.isDigit(ch[i])) {
                    tempNum = tempNum * 10 + (ch[i] - '0');
                }
                i--;
                if (lastOp == '+') {
                    deque.push(tempNum);
                } else if (lastOp == '-') {
                    deque.push(-tempNum);
                } else {
                    deque.push(op(lastOp,deque.pop(),tempNum));
                }
            } else {
                lastOp = ch[i];
            }
        }
        int res = 0;
        for (int num : deque) {
            res += num;
        }
        return res;
    }
    public int op(char c,int a,int b) {
        if (c == '+') {
            return a + b;
        } else if (c == '-') {
            return a - b;
        } else if (c == '*') {
            return a * b;
        } else  {
            return a / b;
        }
    }
}


相关文章
|
6月前
|
Java
在Java中,你可以创建一个简单的四则运算程序来执行小学级别的加减乘除操作
【6月更文挑战第19天】Java程序实现简单四则运算,接收用户输入的两个数字和运算符,根据运算符调用相应函数进行计算。包含加、减、乘、除功能,其中除法操作检查了除数是否为零,避免运行时错误。
59 5
|
Java
用JAVA实现小学四则运算
用JAVA实现小学四则运算
96 1
|
7月前
|
Java Android开发
Java实现随机四则运算问题
Java实现随机四则运算问题
81 0
ZZULIOJ-1037,四则运算(Java)
ZZULIOJ-1037,四则运算(Java)
ZZULIOJ-1003,两个整数的四则运算(Java)
ZZULIOJ-1003,两个整数的四则运算(Java)
|
5天前
|
安全 Java API
java如何请求接口然后终止某个线程
通过本文的介绍,您应该能够理解如何在Java中请求接口并根据返回结果终止某个线程。合理使用标志位或 `interrupt`方法可以确保线程的安全终止,而处理好网络请求中的各种异常情况,可以提高程序的稳定性和可靠性。
35 6
|
20天前
|
设计模式 Java 开发者
Java多线程编程的陷阱与解决方案####
本文深入探讨了Java多线程编程中常见的问题及其解决策略。通过分析竞态条件、死锁、活锁等典型场景,并结合代码示例和实用技巧,帮助开发者有效避免这些陷阱,提升并发程序的稳定性和性能。 ####
|
18天前
|
存储 监控 小程序
Java中的线程池优化实践####
本文深入探讨了Java中线程池的工作原理,分析了常见的线程池类型及其适用场景,并通过实际案例展示了如何根据应用需求进行线程池的优化配置。文章首先介绍了线程池的基本概念和核心参数,随后详细阐述了几种常见的线程池实现(如FixedThreadPool、CachedThreadPool、ScheduledThreadPool等)的特点及使用场景。接着,通过一个电商系统订单处理的实际案例,分析了线程池参数设置不当导致的性能问题,并提出了相应的优化策略。最终,总结了线程池优化的最佳实践,旨在帮助开发者更好地利用Java线程池提升应用性能和稳定性。 ####
|
20天前
|
缓存 Java 开发者
Java多线程编程的陷阱与最佳实践####
本文深入探讨了Java多线程编程中常见的陷阱,如竞态条件、死锁和内存一致性错误,并提供了实用的避免策略。通过分析典型错误案例,本文旨在帮助开发者更好地理解和掌握多线程环境下的编程技巧,从而提升并发程序的稳定性和性能。 ####