这是一个简单的四则运算计算器,不支持括号,没有做乘法的越界计算和除0等异常处理。
只是简单的描述一个四则运算过程。
package SortSet;
import java.util.Stack;
public class OperationTest {
private static Stack<Character> opeStack = new Stack<Character>();
private static Stack<Integer> numStack = new Stack<Integer>();
private static StringBuilder in = new StringBuilder();
private static StringBuilder number = new StringBuilder();
public static void main(String[] args) {
System.out.println(cal("4-6*8-5+2*11"));
}
public static int cal(String input) {
in.append(input);
while (in.length() > 0) {
char temp = in.charAt(0);
in.delete(0, 1);
if (temp > '0' && temp < '9') {
number.append(temp);
} else {
if (!"".equals(number.toString())) {
int num = Integer.parseInt(number.toString());
numStack.push(num);
number.delete(0, number.length());
}
while (!opeStack.isEmpty() && !compare(temp)) {
int num2 = numStack.pop();
int num1 = numStack.pop();
char ope = opeStack.pop();
cal0(ope,num1,num2);
}
opeStack.push(temp);
}
}
if(number.length()>0){
int num = Integer.parseInt(number.toString());
numStack.push(num);
}
while(!opeStack.isEmpty()){
int num2= numStack.pop();
int num1= numStack.pop();
cal0(opeStack.pop(),num1,num2);
}
return numStack.pop();
}
public static void cal0(char ope,int num1 ,int num2){
switch (ope) {
case '+':
numStack.push(num1 + num2);
break;
case '-':
numStack.push(num1 - num2);
break;
case '*':
numStack.push(num1 * num2);
break;
case '/':
numStack.push(num1 / num2);
break;
}
}
public static boolean compare(char operation) {
if (opeStack.isEmpty())
return true;
char last = opeStack.peek();
switch (operation) {
case '+':
return false;
case '-':
return false;
case '*':
if (last == '+' || last == '-')
return true;
return false;
case '/':
if (last == '+' || last == '-')
return true;
return false;
}
return true;
}
}
执行结果为:
-27
说明:这里乘法问题需要考虑越界,最好用大整数得结果。另外除法也需要考虑除0异常。 这里采用StringBuilder减少了创建String的开销。 算法过程为将操作数压入操作栈,如果当前操作符优先级低于栈顶优先级,则计算,否则压入操作符栈。当最终计算式遍历完时,进行运算即可。
分享到:
相关推荐
**MFC简单四则运算计算器** MFC(Microsoft Foundation Classes)是微软提供的一个C++类库,用于构建Windows应用程序,尤其是图形用户界面(GUI)应用。在这个“MFC简单四则运算计算器”项目中,我们将深入探讨如何...
简易四则运算计算器,使用时需将.m和.fig文件放到matlab工作目录下(本人使用的是R2013,放到bin文件夹即可,其他版本放到对应文件夹,有的是work文件夹),然后在命令窗口输入.m文件的文件名,即可显示一个简易...
【VC6.0简单四则运算计算器】是一个适合初学者的编程项目,它利用Microsoft Foundation Classes (MFC) 库在Visual C++ 6.0环境下构建。MFC 是一个C++类库,它为Windows应用程序开发提供了丰富的接口,简化了窗口、...
在本文中,我们将深入探讨如何使用C语言设计一个基于数据结构的四则运算计算器。这个计算器利用了循环队列和顺序栈的概念,可以处理基本的加法、减法、乘法和除法运算,但不支持括号。下面将详细阐述相关知识点。 #...
《C++实现的四则运算计算器详解》 在编程领域,设计一个支持加法(+)、减法(-)、乘法(*)和除法(/)的四则运算计算器是一项基础而重要的任务。本篇文章将围绕“C++支持的四则运算计算器”这一主题,深入探讨其...
【四则运算计算器】是一个基于VB(Visual Basic)开发的简单计算器程序,它实现了基本的数学四则运算功能,即加法、减法、乘法和除法。VB是一种可视化的编程环境,由微软公司推出,它使得编程过程更为直观和易学,...
实现了简单四则运算器,利用C#制作计算器页面
标题中的“mfc简单四则运算计算器”是指利用Microsoft Foundation Classes (MFC)库开发的一个基本的计算器程序,它能够执行基本的数学运算,包括加法、减法、乘法和除法。MFC是微软提供的一套C++类库,用于构建...
本文将详细介绍如何使用 Matlab GUI 制作一个简单的四则运算计算器。 一、添加控件 在 Matlab GUI 中,我们可以添加各种控件,例如按钮、编辑框、标签等。在这个例子中,我们将添加九个数字按钮、四个运算符按钮、...
简单四则运算计算器是一款基于MFC(Microsoft Foundation Classes)框架开发的应用程序,它实现了基本的数学运算,包括加法(+)、减法(-)、乘法(*)、除法(/)以及开方和处理正负号的功能。MFC是微软提供的一套...
在本项目中,“利用栈原理实现简易四则运算计算器”涉及到以下几个关键知识点: 1. **栈(Stack)**:栈是一种线性数据结构,其中元素的添加和删除操作(称为压入和弹出)只在栈顶进行。栈的基本操作包括压栈(push...
大多数计算器是利用堆栈来解决的,这里使用token来作为最小元将算式不断分解后进行运算,不需要别的数据结构。
【标题】"MyEclipse制作的简单四则运算计算器"是一个使用Java编程语言在MyEclipse集成开发环境中创建的应用程序,旨在实现基本的数学运算功能,包括加法、减法、乘法、除法以及求余数操作。该计算器还具有用户友好的...
课程设计——四则运算计算器
PHP实现四则运算计算器 一、实验环境 1、环境搭建:Windows 8+Apache 2.4.18+MySQL 5.7.11+... 2、文本编辑器:Sublime Text3。 二、主要技术 本实验使用PHP 7、HTML和JavaScript实现简单的四则运算计算器制作。
在本项目中,我们关注的是一个使用C#编程语言在Visual Studio 2010环境下编写的四则运算计算器。这个计算器程序能够处理基本的加法、减法、乘法和除法运算,并且能够正确处理操作符的优先级,比如括号内的计算先于...
本项目“C#四则运算计算器”是一个基础的计算器应用程序,它实现了基本的数学运算,包括加法、减法、乘法和除法,这些都是四则运算的主要组成部分。 四则运算是数学的基础,对于计算机科学而言,理解和实现这些运算...
在C#编程中,开发一个简单的四则运算计算器是一个经典的初学者项目,它涉及到基本的UI设计、事件处理以及数值类型的转换。这个项目的核心在于理解如何接收用户输入、执行计算并返回结果。以下是对这个小型四则运算...