这是“破解编码采访”一书中的一个问题。这里是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