为什么要添加方法连接arrList的元素?

时间:2019-05-22 11:39:58

标签: java arraylist

我有一个字符串,它是一个布尔方程:data1 + data2.data3 ..我想将我的字符串文本放入arrayList eq.getEquation()

因此,最后我想拥有[data1,+,data2,.,data3]

这就是我的代码的目的。但是问题是当我将字符串添加到arrayList *(使用add方法:eq.getEquation().add())时。我不知道为什么,但是当我这样做时:eq.getEquation().add(str.toString());我的字符串与前一个字符串连接在一起元素,但未添加...

public void DmdViewToPasteTextFromClipboard(String text){
        if(text!=null){
            int item=0;
            String[] ArrOfStr = text.split("");
            StringBuilder str = new StringBuilder();
            for(int i=0; i<ArrOfStr.length; i++){
                if(!ArrOfStr[i].equals("+") && !ArrOfStr[i].equals(".") && !ArrOfStr[i].equals("¤") &&
                        !ArrOfStr[i].equals("!")&&!ArrOfStr[i].equals("(")|| !ArrOfStr[i].equals(")")){
                    str.append(ArrOfStr[i]);                
                }else{
                    //System.out.print("str : "+ str +"\n");
//                  eq.getEquation().add(str.toString());
                    eq.getEquation().add(str.toString());
                    eq.getEquation().add(ArrOfStr[i]);
                    str.replace(0, str.length(), "");
                }
            }
            eq.getEquation().add(str.toString());
//          eq.getEquation().add(str);
            //System.out.print("last str : "+ str +"\n");
            System.out.println("Eq of Past mathod ----> "+ eq.getEquation());   

        }
        f.DisplayEq(eq.getEquation());
    }
  

结果:过去方法的等式----> [紫+黄]

thnk

2 个答案:

答案 0 :(得分:1)

您的复杂情况有误,最后一个||应该也应该是&&

if(!ArrOfStr[i].equals("+") && !ArrOfStr[i].equals(".") && !ArrOfStr[i].equals("¤") &&
   !ArrOfStr[i].equals("!") && !ArrOfStr[i].equals("(") && !ArrOfStr[i].equals(")")) {

或者您可以定义operators的列表,然后仅检查当前字符是否在该列表中:

List<String> operators = Arrays.asList("+", ".", "¤", "!", "(", ")");
if(! operators.contains(ArrOfStr[i])) {

或者仅按单词边界\b进行分隔,可能还带有一些空白\s*

List<String> tokens = Arrays.asList(text.split("\\s*\\b\\s*"));

两种方法都以[violet, +, yellow]结尾。

答案 1 :(得分:0)

在else块中,

str.replace(0, str.length(), "");

不会“重置” str(而是返回值)。我相信你应该使用

str.setLength(0);

代替