显示计算对错代码
package com.app.senior_calculator;
import java.math.BigDecimal;
import java.util.EmptyStackException;
import java.util.Stack;
import android.util.Log;
// 测试匹配否
// 特殊加减乘除 + - × ÷
// 特殊正负 ﹢﹣
// 普通加减乘除正负 + - * / + -
public class MyCalculate {
private static String expression;
// 后缀式
private String suffix;
// 特殊左括号
final static char LEFT_NORMAL = '(';
// 特殊右括号
final static char RIGHT_NORMAL = ')';
// 特殊负号
final static char MINUS = '-';
// 特殊加号
final static char ADD = '+';
// 特殊乘法
final static char MUL = 'x';
// 特殊除法
final static char DIV = '/';
// 特殊减法
final static char SUB = '-';
// 特殊等于号
final static char equ = '=';
public static String getExpression() {
return expression;
}
// 返回后缀
public String getSuffix() {
return suffix;
}
public void setExpression(String equation) {
expression = equation;
createSuffix();
}
public MyCalculate(String equation)
{
expression = equation;
createSuffix();
}
public MyCalculate()
{
expression = "";
suffix = "";
}
/**
* 判断括号有没有匹配
* 匹配方法:遇到左括号进栈,遇到右括号出栈并且比对出栈的括号
*
*/
public boolean isBalanced()
{
Stack<Character> store = new Stack<Character>();
store.clear();
char c;
for(int i=0; i<expression.length(); i++)
{
c = expression.charAt(i);
switch(c)
{
case LEFT_NORMAL:
{
store.push(expression.charAt(i));
break;
}
case RIGHT_NORMAL:
{
if(store.isEmpty() || store.pop()!= LEFT_NORMAL)
{
return false;
}
break;
}
}
}
if(store.isEmpty())
{
return true;
}
else
{
return false;
}
}
// /**
// * 判断括号是否合法 ,前提这一步是在括号匹配的情况下才进行
// * 括号合法法则:左括号不能在算式最后一个位置,右括号不能在第一个位置,
// * 左括号的位置的下一个位置上的字符不能为运算符,
// * 右括号的位置的上一个位置上的字符不能为运算符。
// * @return
// */
// public boolean bracketLegal()
// {
// String[] answer;
// if(false == balanced)
// {
// return false;
// }
// String str = expression.trim();
// for(int index=0; index<str.length(); index++)
// {
//
// if(str.charAt(index) == LEFT_NORMAL) // 左括号情况
// {
//
// char c = str.charAt(index+1);
// if(!((index<str.length()-1) &&
// (isNum(c))))
// {
// return false;
// }
//
// }else if(str.charAt(index) == RIGHT_NORMAL) // 右括号情况
// {
//
// char c = str.charAt(index-1);
// if(!(index>0 && isNum(c)))
// {
// return false;
// }
//
// }
//
// }
// return true;
// }
//
// /**
// * 运算符不能在第一个位置和最后一个位置
// * 而且运算符不能连着写 例如:+-
// * @return
// */
// private boolean operatorLegal()
// {
// String str = expression.trim();
// for(int index=0; index<str.length(); index++)
// {
// if(isOperator(str.charAt(index)))
// {