索引超出界限异常,我写的功能已关闭

时间:2015-10-08 10:45:36

标签: java vector

我写了一个函数,它接受一个字符串文本,并可以访问包含的向量v 字符。它循环在文本[i]上。如果发现任何在v中的字符,那么它应该采用text [i]并将其放入v2(一个新的向量)中,并在v中找到相同的索引?在我的帮助下打印出来的异常?

     public void encode( StringBuffer text) // need test
       {
           int temp,temp3;
           boolean t;
           String temp2;
           int j=0;
           int sizeoftext=text.length()-1;

           do
           {
           for(int i=v.size()-1;i>-1;--i) // loop on text
           {
               temp=(v.elementAt(i)).length();// length of the longest word in dictionary
               temp2=text.substring(j, j+temp); //string with the same length of temp
               if((v.elementAt(i).equals(temp2)))// check if they r equal
                   {   

 HERE IS THE PROBLEM          >>            v2.add(i,temp2); // if yes add it to v2
                       temp3=temp+1;// increase size to take the nxt char
                       v.addElement(text.substring(j,temp3)); //add it to the dictionay
                      // v2.trimToSize();
                      // v.trimToSize();
                   }

           }

           temp3=temp=0;
           ++j;
           --sizeoftext;


           }while(sizeoftext>-1);



       }

2 个答案:

答案 0 :(得分:1)

使用

for(int i=v.size()-1;i>=0;i--) 

而不是

for(int i=v.size()-1;i>-1;--i)

答案 1 :(得分:0)

更改

for(int i=v.size()-1;i>-1;--i) 

for(int i=v.size()-1;i>=0;i--) 

这很重要,因为 i - - i 不会产生相同的结果,并使for以不同的方式处理索引。

这里解释:What is the difference between ++i and i++?(其他语言问题,但关于i ++ vs ++ i的回答是相同的)