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

Java 删除了两个值,为什么。?,java,data-structures,Java,Data Structures,我试图创建一个数字和运算符的数组列表,不包括中间的空格。 现在,当我想删除列表中某个位置的一个值时,另一个值会被删除。 这是的主要功能 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

我试图创建一个数字和运算符的数组列表,不包括中间的空格。 现在,当我想删除列表中某个位置的一个值时,另一个值会被删除。 这是的主要功能

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();
这就是输出

y5
x2
v3
+-1

在方法
del
中,您需要:

  • 移除内部
    for
    循环中的
    大小--

  • if
    语句中,在
    for
    循环的内部
    之后添加
    break

  • 其他一些注意事项:

  • 您可以更改:

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

    致:

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

  • 您可以更改:

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

    致:

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


  • 它不一定会提高性能,但会使代码更干净……

    您是否尝试过调试代码并逐步执行?您在这里做什么:for(int c=i;c该行将值从我删除数据的当前位置上方的一个步骤移动到空阵列插槽
    +-*12
    
    y5
    x2
    v3
    +-1