写了一个个位数的四则运算跟大家交流,如果大家对多位数的四则运算感兴趣可以交流学习
import java.util.LinkedList;
class Stack<T>{
private LinkedList<T> memory = new LinkedList<T>();
public void push(T arg){
memory.addFirst(arg);
}
public T peek(){
return memory.peek();
}
public T pop(){
return memory.poll();
}
public boolean empty(){
return memory.isEmpty();
}
}
public class Arithmometer {
private char[] express;
private int result;
private Stack<Integer> data = new Stack<Integer>();
private Stack<Character> oprator = new Stack<Character>();
private void init(String express){
this.express = express.toCharArray();
}
private void pushData(char operNumber){
data.push(operNumber - '0');
}
private void pushOperator(char operator){
oprator.push(operator);
}
private boolean needCalculate(char operator){
if(oprator.empty()){
return false;
}
switch(operator){
case '(':
return false;
case ')':
if(oprator.peek() == '('){
oprator.pop();
return false;
}
return true;
case '+':
case '-':
if(oprator.peek() == '+' || oprator.peek() == '-'){
return true;
}
if(oprator.peek() == '*' || oprator.peek() =='/'){
return true;
}
break;
case '*':
case '/':
if(oprator.peek() == '*' || oprator.peek() =='/'){
return true;
}
return false;
default: return false;
}
return false;
}
private void doOneStepCalcute(){
int second = data.pop();
int first = data.pop();
int operator = oprator.pop();
int result = 0;
switch(operator){
case '+':
result = first + second;
break;
case '-':
result = first - second;
break;
case '*':
result = first * second;
break;
case '/':
result = first/second;
break;
}
data.push(result);
}
private int calculating(){
for(int i = 0; i < express.length; i++){
if(express[i] >= '0' && express[i] <='9'){
pushData(express[i]);
}
else{
while(needCalculate(express[i])){
doOneStepCalcute();
}
if(express[i] != ')'){
pushOperator(express[i]);
}
}
}
while(!oprator.empty()){
doOneStepCalcute();
}
return data.peek();
}
public int calculate(String express){
init(express);
return calculating();
}
public static void main(String[] args){
Arithmometer arithmometer = new Arithmometer();
int result = arithmometer.calculate("1+2*3");
System.out.println(result);
}
}
分享到:
相关推荐
【VC6.0简单四则运算计算器】是一个适合初学者的编程项目,它利用Microsoft Foundation Classes (MFC) 库在Visual C++ 6.0环境下构建。MFC 是一个C++类库,它为Windows应用程序开发提供了丰富的接口,简化了窗口、...
在这个示例中,`Caculate` 类被定义来处理两个整数的四则运算。类是面向对象编程的一个基本概念,它封装了数据和操作这些数据的方法。在本例中,`Caculate` 类包含了四个成员函数:`add`、`jian`、`cheng` 和 `chu`...
标题中的“mfc简单四则运算计算器”是指利用Microsoft Foundation Classes (MFC)库开发的一个基本的计算器程序,它能够执行基本的数学运算,包括加法、减法、乘法和除法。MFC是微软提供的一套C++类库,用于构建...
### 大数四则运算——双链表法 在计算机科学与编程领域中,处理大数运算是一项重要的技能。特别是当数字超出标准整型或浮点型数据类型的范围时,传统的方法将不再适用。本文将深入探讨一种特殊的大数运算实现方法...
本篇我们将深入探讨一个使用汇编语言编写的四则运算小程序,这个小程序能够处理五位数内的加、减、乘、除运算。 首先,我们来看这个程序的核心功能。它通过用户输入的数字(1代表加法,2代表减法,3代表乘法,4代表...
四则运算练习器是一款专为提升用户口算能力设计的应用程序。它涵盖了加法、减法、乘法和除法这四种基本的数学运算,旨在帮助用户,特别是学生群体,加强心算技巧,提高数学计算速度和准确性。通过反复练习,用户可以...
在IT领域,尤其是在底层编程和系统开发中,理解无符号32位数的四则运算至关重要。这涉及到计算机内部如何处理数字以及如何用汇编语言实现这些运算。本文将深入探讨这一主题,涵盖无符号32位整数的加法、减法、乘法和...
在数据结构的学习中,长整数四则运算是一项重要的实践任务,它涉及到计算机科学中的算法设计和实现。这里,我们主要探讨的是如何使用代码来处理超过标准整型范围的大整数,即长整数,进行加法、减法、乘法和除法运算...
在IT领域,构建一个“四则运算表达式计算器”是一个基础但重要的任务,它涉及到编程语言中的算术运算、表达式解析以及错误处理等关键概念。这个计算器能够处理加法、减法、乘法和除法这四种基本的数学运算,并且具备...
使用图形用户界面编写一个小学生整数四则运算练习软件。程序启动后,用户输入用户名,然后选择做什么运算(加、减、乘、除、混合)、做几位数的运算,再单击“开始做题”,之后计算机按要求随机生成10道题目,用户...
大数四则运算的 C++ 实现 大数四则运算是指对非常长的整数进行加减乘除等运算。大数运算在许多领域中都有广泛的应用,如密码学、物理学研究、生物学、化学等。例如,计算圆周率 π 的值需要非常高的精度,否则会...
同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式。 练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件...
本项目“C#四则运算计算器”是一个基础的计算器应用程序,它实现了基本的数学运算,包括加法、减法、乘法和除法,这些都是四则运算的主要组成部分。 四则运算是数学的基础,对于计算机科学而言,理解和实现这些运算...
本主题将深入探讨大数的四则运算,包括加法、减法、乘法和除法,以及如何实现无限位数的运算。 1. **大数数据结构**:大数的数据结构通常采用数组或链表来存储,每个元素代表一个位。例如,可以用数组存储每一位...
这个项目就是基于这样的背景,作者尝试实现了大整数的四则运算。 首先,我们来看大整数类的设计。在C++中,大整数通常通过数组或向量存储,每个元素表示数字的一个位。数组或向量的长度可以动态调整,以适应任意...
在本实验中,我们利用双向循环链表来实现长整数的存储和四则运算,特别是加法和减法。这种数据结构的选择主要是因为它能够方便地处理长整数的存储和运算过程中的进位和借位操作。 首先,双向循环链表的每个节点仅...
在IT领域,大数和小数的四则运算通常涉及到高级数学和计算机科学中的算法设计。本主题聚焦于使用链表实现大数和小数的加法、减法、乘法、除法以及幂运算。链表作为一种数据结构,特别适合处理动态变化且长度不固定的...
用C++ 编写的,用于计算个位数的四则运算,第一次发稿,支持啊!!!
该软件用于辅助训练小学生熟练掌握整数的四则运算。软件的功能如下: ①用户可以选择做什么运算(加、减、乘、除、混合),做几位数的运算,每次的出题数量,是否限定时间等。设定自动保存,可以多次使用,设定也...
3.用户可指定操作数的数目(至少二个、至多四个),如果指定的操作数超过2个,应该随机出现括号用于改变运算顺序。 4.用户可以指定结果是否允许出现负数。 5.用户可以指定每个操作数的最大值 6.用户可以指定题目的...