比如说从控制台输入48*(1+2)+123/23,如何把他存进一个String数组中,数组单元中分别是
str[0]="48" , str[1]="*" , str[2]="(" , str[3]="+" , str[4]=")" , str[5]="+" , str[6]="123" , str[7]="/" , 
str[8]="23"

解决方案 »

  1.   

    用split+正则import java.util.*;
    public class Test3{
    public static void main(String[] args) {
    String str="48*(1+2)+123/23";
    String regex="(?<!^)((?=[\\+\\-*/()])|(?<=[\\+\\-*/()]))";
    String[] result=str.split(regex);
    System.out.println(Arrays.toString(result));
    }

      

  2.   

    str[0]="48" , str[1]="*" , str[2]="(" , str[3]="+" , str[4]=")" , str[5]="+" , str[6]="123" , str[7]="/" , "1"和"2"不要了?
      

  3.   

    "(?<!^)((?=[\\+\\-*/()])|(?<=[\\+\\-*/()]))
    这个正则是用来匹配用字符之间的间隙的,
    1、(?<!^)这个表示间隙的前面不能是一行的开始。
    2、(?=[\\+\\-*/()]) 表示间隙之后紧跟着的是+ - * / ( )之一。
    3、(?<=[\\+\\-*/()]) 表示间隙的前面是+ - * / ( ) 之一。
    4、2与3之间“|”表示或
    5.1与后面的组是逻辑与的关系。我解释的不是太好,我是从下面的几个贴子中学到的。详细的应用请看下面的帖子吧:http://topic.csdn.net/u/20080716/22/80cdd418-a0e9-4e7e-8435-df6d4bc11c4a.html?42522http://topic.csdn.net/u/20080627/14/8a91b33a-f35c-4303-85b5-e0a8da462202.html?93050
      

  4.   

    import java.util.*;
    public class Test3{
        public static void main(String[] args) {
            String str="48*(1+2)+123/23";
            String regex="(?<!^)((?=[\\+\\-*/()])|(?<=[\\+\\-*/()]))";
            String[] result=str.split(regex);
            System.out.println(Arrays.toString(result));
        }
    }大虫子果真什么都会
      

  5.   

    还有一个是正则的基础知识:
    http://topic.csdn.net/u/20080306/17/f37a1818-3968-49b4-8f79-e5564486d63e.html?94491都是火龙果的贴子.
    火龙果的正则厉害极了!
      

  6.   

    我只会点j2SE的东西,j2ee一点都不会.
      

  7.   

    啊,我这个问题还是没有解决啊,我想从控制台直接输入运算式,然后计算出结果,就卡这个地方不会弄了,
    我也是刚开始学习j2se,今天一天都在弄这个问题。
      

  8.   

    String regex="(?<!^)((?=[\\+\\-*/()])|(?<=[\\+\\-*/()]))";
     强 看不懂!
      

  9.   

    import java.util.*;
    public class Test3{
    public static void main(String[] args) {
    String str="48*(1+2)+123/-23";
    String regex="(?<!^)((?=[\\+\\-*/()])|(?<=[*/()])|(?<=[\\+\\-])(?<![\\+\\-*/][\\+\\-]))";
    String[] result=str.split(regex);
    System.out.println(Arrays.toString(result));
    }

    }输出:
    F:\java>java Test3
    [48, *, (, 1, +, 2, ), +, 123, /, -23]
      

  10.   

    是不是前面是符号的时候后面的减号匹配成负数啊,可是在(后面和字符串刚开始的地方没有匹配成功,我对正则表达式也是刚开始接触,还望指教
    import java.util.*;
    public class Test3{
        public static void main(String[] args) {
            String str="-48*(-1-2)*4+-1-23/-23";
            String regex="(?<!^)((?=[\\+\\-*/()])|(?<=[*/()])|(?<=[\\+\\-])(?<![\\+\\-*/][\\+\\-]))";
            String[] result=str.split(regex);
            System.out.println(Arrays.toString(result));
        }
        
    }结果是[-, 48, *, (, -, 1, -, 2, ), *, 4, +, -1, -, 23, /, -23]
      

  11.   

    import java.util.*;
    public class Test3{
    public static void main(String[] args) {
    String str="-48*(-1+-2)+-123/-23";
    String regex="(?<!^)((?=[\\+\\-*/()])|(?<=[*/()])|(?<=[\\+\\-])(?<![\\+\\-*/][\\+\\-])(?<![\\+\\-*/][(][\\+\\-])(?<!^[\\+\\-]))";
    String[] result=str.split(regex);
    System.out.println(Arrays.toString(result));
    }

    }F:\java>java Test3
    [-48, *, (, -1, +, -2, ), +, -123, /, -23]
      

  12.   

    学习学习,除了说声感谢不知道该说什么,谢谢,初来csdn发现这真是个好地方
      

  13.   

    String regex="(?<!^)((?=[\\+\\-*/()])|(?<=[*/()])|(?<=[\\+\\-])(?<![\\+\\-*/(][\\+\\-])(?<!^[\\+\\-]))";简化了一下
      

  14.   

    大bug帅呆了,受了大bug启发,也写了写public class Test {
    public static void main(String[] args) {
         
    String str="48*(1+2)+123/-23";  
            String[] result=str.split("(?=\\+|-|\\*|/|-|\\(|\\))|(?<=[^0-9])"); 
            System.out.println(Arrays.toString(result));
            }
    }