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;
}
}
分享到:
相关推荐
在本项目中,我们主要探讨的是如何利用Java编程语言设计一个具有加减乘除四则混合运算功能的GUI(图形用户界面)计算器。这个计算器旨在模拟Windows操作系统中的标准计算器,提供用户友好的交互方式,使得非程序员也...
Java实现四则混合运算代码示例 Java是目前最流行的编程语言之一,广泛应用于Android应用开发、Web开发、企业软件开发等领域。四则混合运算是数学运算中最基本的运算,包括加法、减法、乘法和除法。Java实现四则混合...
### Java计算器实现:四则混合运算解析 在深入解析给定的Java代码片段之前,我们首先需要理解其核心功能——实现一个能够处理包含加、减、乘、除四则混合运算的计算器。此计算器接收一个混合运算表达式作为输入,并...
在本项目中,"Java综合程序设计——计算器(实现运算符优先级的四则混合运算)"是一个典型的软件开发任务,旨在实现一个功能丰富的计算器,包括基础的四则运算以及更复杂的数学操作如对数和平方根。这个计算器的关键...
在编程领域,构建一个能处理四则混合运算的计算器是一项基础但重要的任务。在这个Java实现的版本中,我们关注的核心知识点主要包括:基本算术运算符、运算符优先级、小数点处理以及程序设计的基本结构。 首先,让...
总结来说,"编译原理课程设计实现四则混合运算"项目提供了一个全面的实践平台,让学生们能够亲手操作编译器的各个关键步骤,从词法分析到语义分析,再到Java代码和汇编代码的生成。通过这样的实践,学习者可以深入...
四则混合运算是数学中的基本概念,涉及到加法、减法、乘法和除法的组合运用。在编程领域,创建一个四则混合运算器,尤其是针对移动平台如Android的应用,意味着开发一个能够处理这些运算的软件工具。下面将详细讨论...
本程序是一个简易的四则混合运算计算器实现,采用Java Swing库构建GUI界面。它支持加、减、乘、除以及数字输入等基本功能,并能进行简单的混合运算。 #### 二、核心组件与变量 1. **arg**: 用于存储计算过程中的...
【Java实现四则运算题目生成程序】 在编程领域,创建一个能够自动生成四则运算题目的程序是一项常见的任务,尤其适用于教育和学习环境。在这个基于Java的课程设计中,我们探讨了如何利用Java语言实现这样的功能。...
将近250行的算法 实现了通过字符串进行加减乘除四则运算 纯通过处理字符串和数组实现 希望能帮助大家: 例如:String input "33+26 77+70"; String result ""; try { result Account...
### 四则运算JAVA计算器知识点解析 #### 一、项目概述 该项目是一个基于Java Swing的简单计算器应用程序,能够实现基本的四则运算功能,并且支持括号操作,以解决优先级问题。为了处理复杂的数学表达式,该计算器还...
该资源为基于Java的四则运算练习系统,用户可以在该系统进行练习,考试,查看错题,和进行算法小游戏。练习和考试可以选择难度,通过考试后会提升自己的能力等级,解锁更高难度的测试。练习和考试中错的题目将记载入...
本次实验采用结对编程方式,设计开发一个小学生四则运算练习软件,使之具有以下功能: 由计算机从题库文件中随机选择 20 道加减乘除混合算式,用户输入算式答案,程序检查答案是否正确,每道题正确计 5 分,错误不...
对于Java这样的面向对象语言而言,实现四则运算不仅涉及到基本的数据类型操作,还需要考虑到运算顺序以及异常处理等问题。 #### 二、Java程序结构与流程 根据提供的部分代码,可以了解到这是一个用于接收用户输入并...
使用图形用户界面编写一个小学生整数四则运算练习软件。程序启动后,用户输入用户名,然后选择做什么运算(加、减、乘、除、混合)、做几位数的运算,再单击“开始做题”,之后计算机按要求随机生成10道题目,用户...
1. 能够完成加减乘除四则运算(整数、小数) 2. 具备清空、退格功能 一、 拓展功能: 1. 能够记录计算的历史记录 2. 正负号功能 3. 支持带括号的运算 4. 平方根,立方根,任意次方根 5. 平方、立方、任意次方 6. ...
在本文中,我们将使用基本的整数运算符来实现四则运算。 二、 代码分析 在给定的代码中,我们可以看到主要有两个函数:`main` 函数和 `interceResult` 函数。`main` 函数用于接受用户的输入,并调用 `...
**标题与描述解析:**“Java四则运算计算器”是一款基于Java语言开发的计算器应用,能够执行加、减、乘、除等基本算术运算,并支持混合运算,具备友好的用户界面。描述中强调了该计算器的易用性和简洁性,适合日常...