类似下面的四则运算式子
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