请问:我有一个String 一个计算式,例如:
0.08+5.6-(7-3.3)*3
我要把运算符和数字都拆开,放到栈里,应该怎么弄

解决方案 »

  1.   

     String  str=0.08+5.6-(7-3.3)*3;
     String  temp=null; 
    for(i=0,j=0;i<str.length;i++){
        if(str[i]==普通字符)
          temp[j++]=str[i];
        else if(str[i]=运算符)
          {
             将str[i]入运算符栈;
              将temp转换后入数字栈;
             并将j=0;
          }

    如果你的程序是要进行表达式求值的话,还要根据优先级进一步细分!
      

  2.   

    subString  replace  "字符串".subString(); 这些函数能解决你的问题,剩下的就是设计下思路和工作量了。
      

  3.   

    String str = "0.08+5.6-(7-3.3)*3";
    int index = 0;
    for(int i = 0; i < str.length; i++) {
        String num;//保存数字
        char oper = str.charAt(i);//保存操作符
        if(oper == '+' || oper == '-' || oper == '*' || oper == '/') {
            num = str.substring(index, i);
            //将数字和操作符保存到堆栈中
             index = i;
        }
    }类似即可...
      

  4.   


    char character =  ' ';
    boolean isNumber = Character.isDigit(character) || character == '.';

    if(isNumber){
    ...
    }else{
    ....
    }
      

  5.   

    给个思路C++的话这样做
    2个栈  一个optr 寄存运算符
    一个opnd 寄存操作数或者运算结果依次读入表达式中的每个字符,若是操作数进opnd,若是运算符则和optr栈的栈顶运算符比较优先权后作相应操作
      

  6.   

    public static void main(String [] args) throws Exception{
    System.out.println("please input a string...");
    Scanner s = new Scanner(System.in);
    String string =new String();
    byte[] bs =new byte[4096];
    string = s.next();
    int l=string.length(); 
    for(int i=0;i<l;i++){
    System.out.println(string.charAt(i));
    } }