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