`
shuofenglxy
  • 浏览: 195330 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

简单的四则运算计算器

 
阅读更多

   这是一个简单的四则运算计算器,不支持括号,没有做乘法的越界计算和除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简单四则运算计算器** MFC(Microsoft Foundation Classes)是微软提供的一个C++类库,用于构建Windows应用程序,尤其是图形用户界面(GUI)应用。在这个“MFC简单四则运算计算器”项目中,我们将深入探讨如何...

    简易四则运算计算器

    简易四则运算计算器,使用时需将.m和.fig文件放到matlab工作目录下(本人使用的是R2013,放到bin文件夹即可,其他版本放到对应文件夹,有的是work文件夹),然后在命令窗口输入.m文件的文件名,即可显示一个简易...

    vc6.0简单四则运算计算器

    【VC6.0简单四则运算计算器】是一个适合初学者的编程项目,它利用Microsoft Foundation Classes (MFC) 库在Visual C++ 6.0环境下构建。MFC 是一个C++类库,它为Windows应用程序开发提供了丰富的接口,简化了窗口、...

    C语言四则运算计算器

    在本文中,我们将深入探讨如何使用C语言设计一个基于数据结构的四则运算计算器。这个计算器利用了循环队列和顺序栈的概念,可以处理基本的加法、减法、乘法和除法运算,但不支持括号。下面将详细阐述相关知识点。 #...

    C++支持的四则运算计算器

    《C++实现的四则运算计算器详解》 在编程领域,设计一个支持加法(+)、减法(-)、乘法(*)和除法(/)的四则运算计算器是一项基础而重要的任务。本篇文章将围绕“C++支持的四则运算计算器”这一主题,深入探讨其...

    四则运算计算器

    【四则运算计算器】是一个基于VB(Visual Basic)开发的简单计算器程序,它实现了基本的数学四则运算功能,即加法、减法、乘法和除法。VB是一种可视化的编程环境,由微软公司推出,它使得编程过程更为直观和易学,...

    C#简单四则运算计算器

    实现了简单四则运算器,利用C#制作计算器页面

    mfc简单四则运算计算器

    标题中的“mfc简单四则运算计算器”是指利用Microsoft Foundation Classes (MFC)库开发的一个基本的计算器程序,它能够执行基本的数学运算,包括加法、减法、乘法和除法。MFC是微软提供的一套C++类库,用于构建...

    运用MatlabGUI制作四则运算的计算器.pdf

    本文将详细介绍如何使用 Matlab GUI 制作一个简单的四则运算计算器。 一、添加控件 在 Matlab GUI 中,我们可以添加各种控件,例如按钮、编辑框、标签等。在这个例子中,我们将添加九个数字按钮、四个运算符按钮、...

    简单四则运算计算器

    简单四则运算计算器是一款基于MFC(Microsoft Foundation Classes)框架开发的应用程序,它实现了基本的数学运算,包括加法(+)、减法(-)、乘法(*)、除法(/)以及开方和处理正负号的功能。MFC是微软提供的一套...

    利用栈原理实现简易四则运算计算器

    在本项目中,“利用栈原理实现简易四则运算计算器”涉及到以下几个关键知识点: 1. **栈(Stack)**:栈是一种线性数据结构,其中元素的添加和删除操作(称为压入和弹出)只在栈顶进行。栈的基本操作包括压栈(push...

    简易四则运算计算器c++代码

    大多数计算器是利用堆栈来解决的,这里使用token来作为最小元将算式不断分解后进行运算,不需要别的数据结构。

    MyEclipase制作的简单四则运算计算器

    【标题】"MyEclipse制作的简单四则运算计算器"是一个使用Java编程语言在MyEclipse集成开发环境中创建的应用程序,旨在实现基本的数学运算功能,包括加法、减法、乘法、除法以及求余数操作。该计算器还具有用户友好的...

    课程设计——四则运算计算器

    课程设计——四则运算计算器

    PHP实现四则运算计算器

    PHP实现四则运算计算器 一、实验环境 1、环境搭建:Windows 8+Apache 2.4.18+MySQL 5.7.11+... 2、文本编辑器:Sublime Text3。 二、主要技术 本实验使用PHP 7、HTML和JavaScript实现简单的四则运算计算器制作。

    C#编写四则运算计算器代码

    在本项目中,我们关注的是一个使用C#编程语言在Visual Studio 2010环境下编写的四则运算计算器。这个计算器程序能够处理基本的加法、减法、乘法和除法运算,并且能够正确处理操作符的优先级,比如括号内的计算先于...

    C# 四则运算 计算器

    本项目“C#四则运算计算器”是一个基础的计算器应用程序,它实现了基本的数学运算,包括加法、减法、乘法和除法,这些都是四则运算的主要组成部分。 四则运算是数学的基础,对于计算机科学而言,理解和实现这些运算...

    c#简单小型四则运算计算器

    在C#编程中,开发一个简单的四则运算计算器是一个经典的初学者项目,它涉及到基本的UI设计、事件处理以及数值类型的转换。这个项目的核心在于理解如何接收用户输入、执行计算并返回结果。以下是对这个小型四则运算...

Global site tag (gtag.js) - Google Analytics