2014-12-07 48 views
0

我正在做一个android的计算器类应用程序,并因为输入数字和不同的符号而产生评估表达式。我的字符串为“10 + 5-35 * 2 + 80/4“,并希望分开所有的数字和符号,以便我可以解决表达。单独的数字和java中的字符串的数学符号

更具体.... 号码可以是任何数字[0-9]之间的任何数字,任何运营商都可以在那里。

+0

阅读有关表达式树 – sol4me 2014-12-07 16:49:56

+0

重复:http://stackoverflow.com/questions/13525024/how-to-split-a -mathematical表达上运营商-AS-定界符-而维持 – JSS 2014-12-07 16:51:11

回答

0

可以遍历字符串,并使用以下命令:

for(Character ch : inputString.toCharArray()) 
    if (Character.isDigit(ch)) 
     // ... 
0
List<String> numbers = new ArrayList<>(); 
    List<String> operators = new ArrayList<>(); 
    String str = "1+2/300%4"; 
    char[] strCharArray = str.toCharArray(); 
    StringBuilder numbersSb = new StringBuilder(); 
    for (int i = 0; i < strCharArray.length; i++) { 
     if (Character.isDigit(strCharArray[i])) { 
      numbersSb.append(strCharArray[i]); 
     } else { 
      operators.add(String.valueOf(strCharArray[i])); 
      numbers.add(numbersSb.toString()); 
      numbersSb = new StringBuilder(); 
     } 
     if (i == strCharArray.length - 1 && !numbersSb.toString().isEmpty()) { 
      numbers.add(numbersSb.toString()); 
     } 
    }