现有如下一个数组;
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
要求将以上数组中的0去掉,并将不为0的值存入一个新数组中,结果如下:
int newArr[]={1,3,4,5,6,6,5,4,7,6,7,5};
能给个思路吗?
非常感谢
这个答案很好,想问一问,有没有不用List集合,只用数组的解决方案呢?如果有我想学习学习,非常感谢呢
追答循环内,把大于0的数字用字符串拼接,数字之间用,分割,然后你在把这串字符串用split方法切割成数组!因为你不知道0有多少个,出现在那里
本回答被提问者采纳利用for循环来得到oldArr里的每一个元素,判断这个元素是否是0,是0就放到新数组里:
int newArr[] = new int[];new Arr就是新数组。我没用eclipse写,不知道有没有错误,你试一下吧,思路就是这样。上一个回答的有点把简单问题复杂化了。
追问int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
int newArr[] = new int[];//之前练习的时候也不清楚这里的数组长度如何解决,我再想想,谢谢
for(int i = 0;i<oldArr.length;i++){
if(oldArr[i]==0){
newArr[newArr.length] = oldArr[i];
}
}
定义数组的时候可以不指定数组的长度。
追问这个怕是直接报错了~,不过还是谢谢你
找到思路了,呵呵
1、先求出重复元素的个数,新数组元素个数=原数组长度-重复元素个数;
2、创建新的数组,指定长度
3、 定义一个变量作为新数组的索引,遍历旧数组,将不为零的元素添加到新数组中,每添加一次,新数组的索引加一