/**
* 检查是否含有需要转译的单元
*/
/*
* 粗略检查是否能够计算,判断的依据是指含有特定的字符 StringTokenizer 如果一段字符是 str = "AAA@bbb#ccc@ddd"
* StringTokenizer(str, "#",false) Token出来的结果是 AAA@bbb 和 ccc@ddd
* StringTokenizer(str, "@#",false) Token出来的结果是 AAA 和 bbb 和 ccc 和 ddd
*
* 因为如果calc字符串中不含有除了列出来的以外的字符 那么所有字符都将作为分隔符,那么Token出来的结果就没有了
* 所以这个地方判断的依据是countTokens == 0
*/
boolean isCalcable(String calc) {
StringTokenizer st = new StringTokenizer(calc, "+-*/()0123456789. ",
false);
if (st.countTokens() == 0)
return true;
return false;
}我自己用的
* 检查是否含有需要转译的单元
*/
/*
* 粗略检查是否能够计算,判断的依据是指含有特定的字符 StringTokenizer 如果一段字符是 str = "AAA@bbb#ccc@ddd"
* StringTokenizer(str, "#",false) Token出来的结果是 AAA@bbb 和 ccc@ddd
* StringTokenizer(str, "@#",false) Token出来的结果是 AAA 和 bbb 和 ccc 和 ddd
*
* 因为如果calc字符串中不含有除了列出来的以外的字符 那么所有字符都将作为分隔符,那么Token出来的结果就没有了
* 所以这个地方判断的依据是countTokens == 0
*/
boolean isCalcable(String calc) {
StringTokenizer st = new StringTokenizer(calc, "+-*/()0123456789. ",
false);
if (st.countTokens() == 0)
return true;
return false;
}我自己用的
1.数据结构中使用栈,多项式用逆波兰表达式表示,建议看看数据结构或编译原理
2.使用证则表达式,csdn的blog中有很多介绍正则表达式的文章,可以看看