gpt4 book ai didi

java - 两个值被删除了,为什么?

转载 作者:行者123 更新时间:2023-12-01 13:30:00 25 4
gpt4 key购买 nike

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

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

最佳答案

del方法中,您需要:

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

  2. if 语句内、内部 for 循环之后添加一个 break

其他一些注意事项:

  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)

它不一定会提高性能,但会让你的代码更干净......

关于java - 两个值被删除了,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21623253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com