日期:2014-05-20  浏览次数:20606 次

如何分离变量和运算符?
类似下面的四则运算式子
String formula = "(1112 + 2134)*4265-436436";
如何将1112, 2134,4265, 436436从中分离出来?
请高手指点!

------解决方案--------------------
最后输出的就是分离后的数据

import java.util.*;;
public class Test {
public static void main(String[] args) {
String formula = "(1112 + 2134)*4265-436436";
ArrayList<String> str=new ArrayList<String>();
String string="";
int h=0;
for(int i=0;i<formula.length();i++)
{
if(formula.charAt(i)<='9'&&formula.charAt(i)>='0')
{
string=string+formula.charAt(i);
h=1;
}
else
{
if(h==1)
{
str.add(string);
}
string="";
h++;
}
}
if(h==1)
{
str.add(string);
}

for(int i=0;i<str.size();i++)
System.out.println(str.get(i));
 
}
}
------解决方案--------------------
正解 JF
------解决方案--------------------
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));
------解决方案--------------------
同意ls的

Java code
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中一般是用正则表达式来实现的
例如:
Java code
 

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