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

import java.util.ArrayList;
import java.util.List;

/*
 * 现在有如下的一个数组: 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} ;
 */
public class Test {

    public static void main(String args[]) {
        int oldArr[] = {1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5};
        List<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);
        }
    }
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-24
遍历数组的每一个元素,判断如果不为0则放入新数组
第2个回答  2014-12-24
1.for循环统计0个数为x

2.定义一个长度为arr1.length-x的数组arr2

3.
int count=0
for(int i=0; i<arr1.length;i++){
if(arr1[i]!=0) {
arr2[count]=arr1[i];
count++;

}
}
第3个回答  推荐于2017-09-24
/*现在有如下的一个数组:
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} ;*/

public static void main(String[] args) {
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} ;
byte count = 0;//计算新数组有多长
//遍历,获得新数组的长度
for (int i = 0; i < oldArr.length; i++) {
if(oldArr[i] != 0){
count ++;
}
}

int[] newArr = new int[count];

//给新数组初始化
count = 0;
for (int i = 0; i < oldArr.length; i++) {
if(oldArr[i] != 0){
newArr[count ++] = oldArr[i];
}
}

//打印观察结果
for (int i = 0; i < newArr.length; i++) {
System.out.print(newArr[i] + ",");
}
第4个回答  2014-12-24
数组长度在定义的时候要定义,由于长度开始你不知道。你可以先用一个List集合去接收 然后再toArray()就变成数组了

List<Integer> list=new ArrayList<Integer>();
for( int a:oldArr){
if(a!=0){
list.add(a);
}
}

int newArr[]=list.toArray();
相似回答