這是「破解編碼採訪」一書中的一個問題。這裏是Java代碼,但爲什麼它會導致ArrayIndexOutOfBoundsException
?我剛剛從這本書中複製過來。導致ArrayIndexOutOfBoundsException的原因是什麼?
class Q1_3{
public static void removeDuplicates(char[] str){
if(str==null) return;
int len=str.length;
if(len<2) return;
int t=1;
for(int i=1;i<len;++i){
int j;
for(j=0;j<t;++j){
if(str[i]==str[j])
break;
}
if(j==t){
str[t]=str[i];
++t;
}
}
str[t]=0; //why ?
}
public static void main(String[] args){
char ss1[] = {'a','b','c','d'};
char ss2[] = {'a','a','a','a'};
char ss3[] = {};
char ss4[] = {'a','a','b','b'};
removeDuplicates(ss1);
removeDuplicates(ss2);
removeDuplicates(ss3);
removeDuplicates(ss4);
System.out.println(ss1);
System.out.println(ss2);
System.out.println(ss3);
System.out.println(ss4);
}
}
因爲't> = str.length'在某個點上。調試您的代碼以瞭解原因。 – Maroun
最好你發佈錯誤日誌。 – jagmohan
導致它*哪裏*? – Raedwald