日期:2014-05-20 浏览次数:20663 次
String formula = "(1112 + 2134)*4265-436436"; StringBuilder sb = new StringBuilder(); for (int i=0; i <formula.length(); i++) { char c = formula.charAt(i); if (c < '0 ' ¦ ¦ c > '9 ') { if (sb.charAt(sb.length()-1) != ', ') { sb.append(","); } } else { sb.append(c); } } String[] rst = sb.toString().split(","); System.out.println(Arrays.toString(rst));
------解决方案--------------------
public static void main(String[] args) {
String str = "(1112 + 2134)*4265-436436";
Pattern pat = Pattern.compile("\\D{1,}");
String[] strArr = pat.split(str);
for(int i=0;i<strArr.length;i++){
if(!"".equals(strArr[i]))
System.out.println(strArr[i]);
}
}
------解决方案--------------------
哥们,你要做的就是解析一个数学算术试的问题吧
解析出来并不难,有很多方法,他的计算才是一个经典的编程问题,既计算器的实现
我先说如何解析吧
以上各位给的各种解析,都可以实现,但是对于这种方面的解析,在java中一般是用正则表达式来实现的
例如:
import java.util.LinkedList;
public class StringSplit {
public static void main(String[] args) {
String s = "123+23+45";
//取到输入的算术式
//解析算术式,把分别把数字,运算符放入number,和op中
LinkedList <String> number = new LinkedList <String>();
LinkedList <String> op = new LinkedList <String>();
for (String n : s.split("\\W")) {
number.add(n);
}
System.out.println("计算之前 number:" + number + " 个数 :"
+ number.size());
for (String o : s.split("\\w+")) {
op.add(o);
}
System.out.println("计算之前 op:" + op + " 个数 :"
+ op.size());
}
}
//output:
计算之前 number:[123, 23, 45] 个数 :3
计算之前 op:[, +, +] 个数 :3