gpt4 book ai didi

java - 将变量/数组与表达式分开,并删除重复项?

转载 作者:行者123 更新时间:2023-12-02 04:18:06 27 4
gpt4 key购买 nike

我正在从表达式中分离出变量和数组名称,然后尝试删除重复项。我的代码适用于大多数表达式,但是当存在诸如 (a + A[a*2-b]) 之类的表达式时,我会遇到麻烦,因为我的程序正在识别两个 由于第一个 a 之后有空格,因此将 a's 作为单独的变量。我觉得有一个简单的修复方法,但我无法弄清楚。有什么想法吗?

    public void buildSymbols() {

String s = expr; //input from a different part of the program
scalars = new ArrayList<ScalarSymbol>(5);
arrays = new ArrayList<ArraySymbol>(5);

for(int i = 0; i<s.length(); i++){
if(Character.isLetter(s.charAt(i))){
String temp = ""; // empty string to add on to

while(i<s.length() && s.charAt(i)!= '*' && s.charAt(i)!= '/' && s.charAt(i)!= '[' && s.charAt(i)!= ']' && s.charAt(i)!= '+' && s.charAt(i)!= '-' && s.charAt(i)!= '(' && s.charAt(i)!= ')'){ // will form variables until delimiter is found (*/[]())
temp = temp + s.charAt(i);
i++;
}
if(i<s.length() && s.charAt(i) == '['){ //array
ArraySymbol addArr = new ArraySymbol(temp);
if(arrays.contains(addArr)){ // duplicate
break;
}
arrays.add(addArr);
} else{ //variable
ScalarSymbol addSca = new ScalarSymbol(temp);
if(scalars.contains(addSca)){ // duplicate
break;
}
scalars.add(addSca);
}
}
}
System.out.println(arrays);
System.out.println(scalars);
}

最佳答案

问题是,当您找到具有相同名称的变量时,您就会跳出 for 循环。您不应该break跳出for循环。将 break 更改为 continue,以便您可以继续解析表达式,但不将该变量添加到列表中。

if(arrays.contains(addArr)){ // duplicate 
continue;
}

关于java - 将变量/数组与表达式分开,并删除重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33087443/

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