我正在尝试创建一个数字和运算符的数组列表,不包括中间的空格。 现在,由于我想在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
答案 0 :(得分:1)
在方法del
中,您需要:
删除内部size--
循环内的for
。
在break
语句中添加if
,在<{strong>>内部for
循环后添加。
其他一些说明:
您可以更改:
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)
它不一定会提高性能,但它会使您的代码更清晰......