资源简介
一个计算器,有多种功能,如取对数、求平方根。最重要的是利用堆栈算法实现运算符优先级。
代码片段和文件信息
/*package com.joshua.cal; */
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.linkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Stack;
public class Calculator {
public final Stack numStack = new Stack();
private final Stack opStack = new Stack();
private char currentOperator;
private char opStackTop;
private int i;
private String expression;
@SuppressWarnings(“rawtypes“)
public void exec(String expression) {
try {
clean();
if (expression == null || expression.isEmpty()) {
throw new IllegalArgumentException(“Blank expression!“);
}
this.expression = expression;
opStack.push(TERMINATE_TOKENS.START_END_MARK);
List tokens = TOKENIZER.exec(expression
+ TERMINATE_TOKENS.START_END_MARK);
for (; i < tokens.size(); i++) {
final object token = tokens.get(i);
if (token instanceof Double) {
processOperand((Double) token);
} else {
processOperator((Character)token);
}
}
} catch (Throwable e) {
System.err.println(String.format(
“Incorret expression: %s\nError: %s“ expression
e.getMessage()));
}
}
private void processOperand(final double operand) {
numStack.push(operand);
}
private void processOperator(final char currentOperator) {
this.currentOperator = currentOperator;
this.opStackTop = opStack.peek();
char calMode = CALCULATE_MODE.getRule(currentOperator opStackTop);
switch (calMode) {
case ‘>‘:
processStackHigerPriorityOperator();
break;
case ‘<‘:
processStackLowerPriorityOperator();
break;
case ‘=‘:
processStackEqualPriorityOperator();
break;
default:
break;
}
}
private void processStackLowerPriorityOperator() {
opStack.push(currentOperator);
}
private void processStackHigerPriorityOperator() {
numStack.push(CALCULATE.exec(opStack.pop() numStack.pop()
numStack.pop()));
--i; // pointer back to the previous operator.
}
private void processStackEqualPriorityOperator() {
if (TERMINATE_TOKENS.START_END_MARK == currentOperator) {
System.out.println(expression + “ = “ + numStack.peek());
} else if (‘)‘ == currentOperator) {
opStack.pop();
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 301 2014-06-18 09:27 Caculator02\.classpath
文件 387 2014-06-17 14:06 Caculator02\.project
文件 629 2014-06-17 14:06 Caculator02\.settings\org.eclipse.jdt.core.prefs
文件 1344 2014-06-19 17:52 Caculator02\bin\CALCULATE.class
文件 1859 2014-06-19 17:52 Caculator02\bin\CALCULATE_MODE.class
文件 3429 2014-06-19 17:52 Caculator02\bin\Calculator.class
文件 5962 2014-06-19 17:54 Caculator02\bin\Cindy.class
文件 1724 2014-06-19 17:52 Caculator02\bin\Clear.class
文件 1160 2014-06-19 17:52 Caculator02\bin\Dot.class
文件 1537 2014-06-19 17:52 Caculator02\bin\Num.class
文件 3066 2014-06-19 17:52 Caculator02\bin\Signs.class
文件 1582 2014-06-19 17:52 Caculator02\bin\SM.class
文件 2487 2014-06-19 17:52 Caculator02\bin\TERMINATE_TOKENS.class
文件 2802 2014-06-19 17:52 Caculator02\bin\TOKENIZER.class
文件 8509 2014-06-18 20:52 Caculator02\src\Calculator.java
文件 6394 2014-06-19 17:54 Caculator02\src\Cindy.java
文件 1360 2014-06-17 14:06 Caculator02\src\Clear.java
文件 444 2014-06-17 14:06 Caculator02\src\Dot.java
文件 790 2014-06-17 14:06 Caculator02\src\Num.java
文件 3809 2014-06-18 20:58 Caculator02\src\Signs.java
文件 842 2014-06-17 14:06 Caculator02\src\SM.java
目录 0 2014-06-17 14:06 Caculator02\.settings
目录 0 2014-06-19 17:52 Caculator02\bin
目录 0 2014-06-18 21:07 Caculator02\src
目录 0 2014-06-18 09:27 Caculator02
----------- --------- ---------- ----- ----
50417 25
- 上一篇:java实现的svn统计修改代码行数完整源码
- 下一篇:没有了
相关资源
- JAVA计算器实验报告与源码
- 自己用java写的计算器源代码(代码注
- 使用java语言编译一个计算器
- java课程设计保存计算过程的计算器
- java大作业,科学计算器
- android:简单计算器+源码+注释
- java编写的汇率计算器
- Android 课设 简单计算器源码(含apk)
- Java swing 计算器。
- 安卓 仿iphone计算器
- 身体质量指数计算器BMI
- WEB实现的计算器
- Android 计算器可货币换算
- android简单计算器的实现
- Android语音计算器 支持括号 可处理异
- android 计算器GridView实现
- android计算器源码压缩包
- 计算器(android)
- android eclipse 编写的简易计算器
- Android仿IOS计算器源码
- Java源码 吃豆豆 俄罗斯方块 扫雷 计算
- 基于Android Studio 开发计算器代码
- Java版计算器源代码带括号
- Java多功能计算器+设计模式+开发文档
- Android 计算器源码
- 用Android studio写的一个四则运算计算器
- 简单的Android计算器,支持科学计算
- Android开发支持连算计算器
- android 数学表达式计算器
- Android计算器混合运算源码
评论
共有 条评论