我写了一个函数,它接受一个字符串文本,并可以访问包含的向量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);
}
答案 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的回答是相同的)