java里删除数组第3个元素并输出
老师布置的作业要求自己写算法我将下标arr[3]和最后一个元素arr[arr.length-1]作交换以后再进行数组缩容为什么输出结果不该是2,6,4,5,7而是2,6,...
老师布置的作业 要求自己写算法 我将下标arr[3]和最后一个元素arr[arr.length-1]作交换以后再进行数组缩容 为什么输出结果不该是 2,6,4,5,7 而是2,6,7,4,5?
不好意思,我打错了。是arr[2] 不是 arr[3]
如果用System.arraycopy方法,是不是得分别写两段代码?
用System.arraycopy方法先将2和6复制到新数组中来 ,再用System.arraycopy方法将4,5,7再复制到新数组中来。可是这样写输出的时候会报错。各位大虾该怎么用System.arraycopy方法写呢? 展开
不好意思,我打错了。是arr[2] 不是 arr[3]
如果用System.arraycopy方法,是不是得分别写两段代码?
用System.arraycopy方法先将2和6复制到新数组中来 ,再用System.arraycopy方法将4,5,7再复制到新数组中来。可是这样写输出的时候会报错。各位大虾该怎么用System.arraycopy方法写呢? 展开
2个回答
展开全部
你的问题在于只进行了一次元素交换,应该写一个循环,把指定位置的元素移到数组末尾,这样再进行缩容就可以了。代码不写了,我来给你说System.arraycopy的写法。废话不说,代码说话:
public class DeleteElementinArry {
public static void main(String[] args) {
int[] arr={2,6,8,4,5,8,6,5,4};
int[] res = deleteElement(arr,3);
System.out.println(Arrays.toString(res));
}
public static int[] deleteElement(int[] arr1,int index){
int[] arr2 = new int[index];
int[] arr3=new int[arr1.length-index-1];
for (int i = 0; i < index; i++) {
arr2[i]=arr1[i];
}
for (int i = index+1; i < arr1.length; i++) {
arr3[i-index-1]=arr1[i];
}
int arr4[]=new int[arr2.length+arr3.length]; //定义一个长度为arr2加arr3长度的数组
System.arraycopy(arr2,0,arr4,0,arr2.length); //将数组arr2的元素复制到arr4中
System.arraycopy(arr3,0,arr4,arr2.length,arr3.length); //将数组arr3的元素复制到arr4中
return arr4;
}
展开全部
public int[] deleteNumAtArray(int[] array,int index){
int temp;
for(int i = index;i<array.length-1;i++){
temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
}
return Arrays.copyOf(array,array.length-1);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |