package com.interview.prepare;
/*
* 四则运算,没有括号,数字均小于零,其中中间运算过程取整。
* 首先将运算时转换为逆波兰式(后缀式)
* 然后通过一个栈辅助运算。当信息为数字时入栈,当信息为符号时~(~代表+-* /
* 一种),出栈并
* 做运算top2~top1
* 测试用例 3+8*2/9-2 结果输出2
*
*/
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
public class Compute {
public static void main(String args[]){
String str = "3+8*2/9-2";
System.out.println(getRes(str));
}
public static int getRes(String str){
char[] array = str.toCharArray();
List<Character> output = new ArrayList<Character>();;
Stack<Character> sign = new Stack<Character>();
for(int i=0;i<array.length;i++)
{
if(array[i]>'0'&&array[i]<='9'){
output.add(array[i]);
}
else if(sign.empty()||getBoolean(sign,array[i]))
{
sign.push(array[i]);
}
else{
while(!sign.empty()&&!getBoolean(sign, array[i]))
output.add(sign.pop());
sign.push(array[i]);
}
}
while(!sign.empty())
{
output.add(sign.pop());
}
System.out.println(output);
Stack<Integer> res = new Stack<Integer>();
Integer result = null;
for(Character temp :output)
{
if(temp>'0'&&temp<='9')
{
res.push(temp-'0');
}
else {
int top1 = res.pop();
int top2 =res.pop();
switch(temp){
case '+':
result = top2+top1;
break;
case '-':
result = top2-top1;
break;
case '*':
result = top2*top1;
break;
case '/':
result = top2/top1;
break;
}
res.push(result);
}
}
return result;
}
private static boolean getBoolean(Stack stack,char element)
{
Character c = (Character)stack.peek();
if((c=='+'||c=='-')&&(element=='*'||element=='/'))
return true;
return false;
}
}
分享到:
相关推荐
设计GUI界面的计算器程序,用户可以通过鼠标依次输入参加计算的数值进行加、减、乘、除等混合运算功能。可参照windows平台上的计算器。 java 面向对象程序设计》课程设计
利用堆栈编程实现四则混合运算,说得很详细,短小,挺容易理解的~
该软件包括完整的词法分析、语法分析、语义分析、Java代码实现和汇编代码实现的四则混合运算,功能齐全,代码易懂。包括相关的工具ant
主要介绍了Java实现四则混合运算代码示例,文中展示了详细代码,具有一定参考价值,需要的朋友可以了解下。
将近250行的算法 实现了通过字符串进行加减乘除四则运算 纯通过处理字符串和数组实现 希望能帮助大家: 例如:String input "33+26 77+70"; String result ""; try { result Account...
一个计算器,有多种功能,如取对数、求平方根。最重要的是利用堆栈算法实现运算符优先级。
简单的JAVA计算器,能进行四则运算,有 括号,加了栈!
该资源为基于Java的四则运算练习系统,用户可以在该系统进行练习,考试,查看错题,和进行算法小游戏。练习和考试可以选择难度,通过考试后会提升自己的能力等级,解锁更高难度的测试。练习和考试中错的题目将记载入...
本次实验采用结对编程方式,设计开发一个小学生四则运算练习软件,使之具有以下功能: 由计算机从题库文件中随机选择 20 道加减乘除混合算式,用户输入算式答案,程序检查答案是否正确,每道题正确计 5 分,错误不...
使用图形用户界面编写一个小学生整数四则运算练习软件。程序启动后,用户输入用户名,然后选择做什么运算(加、减、乘、除、混合)、做几位数的运算,再单击“开始做题”,之后计算机按要求随机生成10道题目,用户...
1. 能够完成加减乘除四则运算(整数、小数) 2. 具备清空、退格功能 一、 拓展功能: 1. 能够记录计算的历史记录 2. 正负号功能 3. 支持带括号的运算 4. 平方根,立方根,任意次方根 5. 平方、立方、任意次方 6. ...
课堂作业。。简单的JAVA程序,包括四则运算。。。很好,汗强大,,来看看把,,
超详细注释的 Android计算器混合运算核心方法,实现思路。其他语言也可以了解借鉴。
Android 实现计算器的加减乘除混合运算 可以对输入数字进行删除返回
本程序实现一个四则混合运算,用户只需要输入四则混合运算表达式,程序自动计算, 可以一次计算一个表达式,也可以批量计算多行表达式,而且适合商业计算精度要求。 由于该程序依赖一个清屏功能cls.dll,使用32位win7...
设计一个计算器,用户可通过鼠标依次输入参加计算的数值,进行加减乘除等混合运算,还有科学计算方法开方、求倒、百分比,可以进行清零、退格,还有相应的便利功能复制、粘贴。除此之外,应设计一个便于使用的图形...
java 实现加减乘除的方法 java 实现加减乘除的方法
java正则实现解析算术表达式 (仅限+-*/和括号)
该软件用于辅助训练小学生熟练掌握整数的四则运算。软件的功能如下: ①用户可以选择做什么运算(加、减、乘、除、混合),做几位数的运算,每次的出题数量,是否限定时间等。设定自动保存,可以多次使用,设定也...
带有可视化界面的简易计算器(1) 计算器应包含功能有:显示当前的...(2) 不需要实现混合运算功能,即键入类似“XXXPYY=”后显示结果即可,其中X和Y为数字键,P为运算键。(3) 界面颜色、字体、按键排布无需与上图一致。