如果我有一个数字数组,比如5,6,8,1,0,5,0,0,0,那么我的数组的长度是9,我想缩短数组以便所有从末尾删除等于0的元素,直到达到第一个非零元素,我该怎么做?简而言之,我希望我的新数组为5,6,8,1,0,5。
答案 0 :(得分:0)
一种简单的方法是
dest
数组srcPos
使用System.arraycopy( src, srcPos, dest, destPos, length );
,destPos
设置为零答案 1 :(得分:0)
首先,您需要通过从反向循环来获取最后一个非零元素的索引。
int i=arr.length-1;
for(;i>=0;i--)
if(arr[i]!=0)break;
现在,一旦你有索引,你可以从index=0
开始循环到最后一个非零元素索引并将它添加到ArrayList。
或
@Aubin建议使用arraycopy
答案 2 :(得分:0)
像这样:):
int[] array = new int[] {5,2,1,2,0,5,0,5,7,0,8,0,0};
//find fisrt not null from end
int index=findFirstNotNull(array);
int[] newArr = Arrays.copyOf(array, index+1);
public int findFirstNotNull(int[] arr){
int index=0;
for(int i=arr.length-1;i>=0;i--){
if(arr[i]!=0){
index= i;
break;
}
}
return index;
}