String[] strArray = new String[10];
strArray[0] = ".add(";
strArray[1] = ".multiply(";
strArray[0] = ").multiply(";
strArray[0] = ".subtract(";
strArray[0] = "divide(";
strArray[0] = "))))";
System.out.println(str2.append("(" + str.charAt(0)).append(strArray[0]).
append(str.charAt(2)).append(strArray[1]).
append(str.charAt(4)).append(strArray[2]).
append(str.charAt(7)).append(strArray[3]).
append(str.charAt(9)).append(strArray[4]).
append(str.charAt(11)).append(strArray[5])
);
strArray[0] = ".add(";
strArray[1] = ".multiply(";
strArray[0] = ").multiply(";
strArray[0] = ".subtract(";
strArray[0] = "divide(";
strArray[0] = "))))";
System.out.println(str2.append("(" + str.charAt(0)).append(strArray[0]).
append(str.charAt(2)).append(strArray[1]).
append(str.charAt(4)).append(strArray[2]).
append(str.charAt(7)).append(strArray[3]).
append(str.charAt(9)).append(strArray[4]).
append(str.charAt(11)).append(strArray[5])
);
解决方案 »
- rxtx串口开发问题
- 问一个菜鸟级问题,这个程序总是报NullPointerException异常,数据库连接都正确,就是执行到pstmt = conn.prepareStatement(sql);就出错怎么回事啊!各位高手指教,先谢过了!
- java求助
- 怎么使用jad?
- 玩过JAVA打印的高手请进?
- 关于消息框和文件选择框的问题。。。(在线等待)
- 请问com.ibm.ejs.dbm.jdbcext.*这个包从哪里可以找到,多谢!!
- jbuider6入门的问题,运行不起?HelloWorld.java
- 什么是erp?
- 搞了两天没明白,图的非递归DFS,和BFS,请教大家,谢谢
- java Applet 的应用
- 问几个java类的问题 麻烦了
用正则表达式实现
首先提取()内的表达式,得到d -e/f 然后先解乘除再加减, 故 先 d - e.divide#f& 然后再e.subtract#d.divide#f&&
依此类推 到最后再把#还原成( , &还原成)
大体就是这样子的啊!
现在没时间帮你写
堆栈或者递归,更好理解一些。
public static String getString(String _pStr) {
boolean rightParenBool = false;
String rightParenCount = "";
String returnWord="";
int wordLength = _pStr.length();
String charWord;
for(int i =0;i < wordLength; i++){
charWord = _pStr.substring(i, i+1);
if(_pStr.substring(i, i+1).equals("(")){
int rightParenPos = _pStr.indexOf(")",i);
//returnWord += "(";
returnWord+=getString(_pStr.substring(i+1, rightParenPos));
returnWord += ")";
i = rightParenPos;
rightParenBool = false;
}else if("+-".indexOf(charWord) != -1){
returnWord+=changeExpress(charWord);
rightParenCount+=")";
}else if("/*".indexOf(charWord) != -1){
returnWord+=changeExpress(charWord);
rightParenBool = true;
}else{
returnWord+=charWord;
if(rightParenBool){
returnWord+=")";
rightParenBool = false;
}
}
}
return returnWord + rightParenCount;
}
public static String changeExpress(String _pSymbol) {
if (_pSymbol.equals("+")) {
return ".add(";
} else if (_pSymbol.equals("-")) {
return ".subtract(";
} else if (_pSymbol.equals("*")) {
return ".multiply(";
} else {
return ".divide(";
}
} public static void main(String[] arges) {
String expression = "a+b*c*(d-e/f)";
System.out.println(getString(expression));
}
代码太长,所以放到blog中,有语法高亮,看的清楚些http://blog.csdn.net/laker_914/archive/2010/01/14/5189487.aspx希望对LZ有帮助
代码惨不忍睹 可以嵌套多括号
求教~~~
http://blog.csdn.net/NOAON/archive/2010/01/15/5194111.aspx