java基础练习题

现有如下一个数组;

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};

能给个思路吗?
非常感谢

第1个回答  2015-11-11
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
//建立一个list集合
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < oldArr.length; i++) {
if (oldArr[i]>0) {
list.add(oldArr[i]);
}
}
int newArr[] = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
newArr[i] = list.get(i);
}
//另一种写法,不过返回的应用型数据类型 但是跟int也差不多
Integer listArr [] = list.toArray(new Integer[list.size()]);

追问

这个答案很好,想问一问,有没有不用List集合,只用数组的解决方案呢?如果有我想学习学习,非常感谢呢

追答

循环内,把大于0的数字用字符串拼接,数字之间用,分割,然后你在把这串字符串用split方法切割成数组!因为你不知道0有多少个,出现在那里

本回答被提问者采纳
第2个回答  2015-11-11

利用for循环来得到oldArr里的每一个元素,判断这个元素是否是0,是0就放到新数组里:

int newArr[] = new int[];
for(int i = 0;i<oldArr.length;i++){
    if(oldArr[i]==0){
        newArr[newArr.length] = oldArr[i];
    }
}

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、 定义一个变量作为新数组的索引,遍历旧数组,将不为零的元素添加到新数组中,每添加一次,新数组的索引加一

第3个回答  2015-11-11
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};int newArr[]={};循环 判断不为0时,存入newArr;
第4个回答  2015-11-11
循环odlArr中的每一个数值,判断该数值是否等于0如果等于,就继续,如果不等于就把数值放到newArr中
第5个回答  2019-04-19
package day415;
import java.util.Scanner;
public class IfDemo {
public static void main(String[] args) {
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
for(int i=0;i<oldArr.length;i++){
if (oldArr[i]!=0){
oldArr[i]=oldArr[i];
System.out.println(oldArr[i]);
}
}
这容易懂 没有错
相似回答