public static void main(String[] args)
{
swap(new String[]{"aaa","bbb","ccc"},1,2);
swap(new Integer[]{1,2,3,4,5},4,5);
}
public static <T> void swap (T[] arr ,int i,int j){
T tem = arr[i];
arr[i]= arr[j];
arr[j] = tem;
}
第二个swap 总是报错误?
首先肯定的,做得很好 用到了自动装箱和拆箱(值得借鉴)。
但是呢 你的 角标越界了
函数是正确的:
public static <T> void swap (T[] arr ,int i,int j){
T tem = arr[i];
arr[i]= arr[j];
arr[j] = tem;
}
这里越界了:swap(new Integer[]{1,2,3,4,5},4,5);
原因:数组new Integer[]{1,2,3,4,5}的长度是5 最大角标是5-1=4!!你却写出了带有5的角标!!!!
简单的问题。 |