删除了两个值,为什么。?

时间:2014-02-07 08:55:26

标签: java data-structures

我正在尝试创建一个数字和运算符的数组列表,不包括中间的空格。 现在,由于我想在List中的某处删除一个值,因此会删除另一个值。 这是主要功能 ...

System.out.println("Enter the prefix expression");
    z=input.nextLine();
    z=z.replaceAll("\\s+", "");



    while(y < z.length()){
        if(z.charAt(y) == '+'|| z.charAt(y) == '-'|| z.charAt(y) == '/'||z.charAt(y) == '*'){
            list.push(y,z.charAt(y));
            v++; //v=number of operators
        }

        else if(z.charAt(y) == '0'|| z.charAt(y) == '1'|| z.charAt(y) == '2'||
                z.charAt(y) == '3'|| z.charAt(y) == '4'|| z.charAt(y) == '5'||
                z.charAt(y) == '6'|| z.charAt(y) == '7'|| z.charAt(y) == '8'|| z.charAt(y) == '9'){

            list.push(y, z.charAt(y));
            x++;//x=number of numbers

            if(x==2){
                if(z.charAt(v-1) == '*'){
                    list.del(x);
                    x--;
                }
            }//end if

        }//end else if
    y++;    
    }//end while
    System.out.println("y" +y);
    System.out.println("x" +x);
    System.out.println("v" +v);
    list.display();

功能 del 就在这里(我在想这里是错误,但我无法发现它)

public void del(int pos){
        for(int i=size;i>=0;i--){
            if(items[i]==items[pos])
            for(int c=i;c<size;c++){
                items[pos]=items[pos+1];
                size--;
            }
        }
    }

我的输入是

+-*12

这是输出

y5
x2
v3
+-1

1 个答案:

答案 0 :(得分:1)

在方法del中,您需要:

  1. 删除内部size--循环内的for

  2. break语句中添加if,在<{strong>>内部for循环后添加

  3. 其他一些说明:

    1. 您可以更改:

      if (z.charAt(y)=='+' || z.charAt(y)=='-' || z.charAt(y)=='*' ...)

      要:

      if ("+-*/".indexOf(z.charAt(y)) != -1)

    2. 您可以更改:

      if (z.charAt(y)=='0' || z.charAt(y)=='1' || z.charAt(y)=='2' ...)

      要:

      if ("0123456789".indexOf(z.charAt(y)) != -1)

    3. 它不一定会提高性能,但它会使您的代码更清晰......