/*
 * 2.现在有如下一个数组:
 *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 test3 { public static void main(String[] args) {

int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
int count =0;
//统计0的个数
for(int i=0;i<oldArr.length;i++){
if(oldArr[i] ==0){
count++;
}
}

//定义新数组长度
int [] newArr = new int[oldArr.length-count];
//开始把非0的数存入新数组
for(int i =0; i <oldArr.length; i++){
if(oldArr[i] == 0){
continue;
}else{
newArr[i] = oldArr[i];
System.out.println(newArr[i]);
}
}

}
}

解决方案 »

  1.   

    int oldArr[] = { 1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5 };
    int count = 0;
    // 统计0的个数
    for (int i = 0; i < oldArr.length; i++) {
    if (oldArr[i] == 0) {
    count++;
    }
    } // 定义新数组长度
    int[] newArr = new int[oldArr.length - count];
    // 开始把非0的数存入新数组
    int j = 0;
    for (int i = 0; i < oldArr.length; i++) {
    if (oldArr[i] == 0) {
    continue;
    } else {
    newArr[j] = oldArr[i];
    System.out.println(newArr[j]);
    j++;
    }
    }
      

  2.   

    首先:类名首字母建议大写
    public class Test3
    {
    public static void main(String[] args)
    {
    int oldArr[] =
    {
    1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5
    };
    int count = 0;
    // 统计0的个数
    for (int i = 0; i < oldArr.length; i++)
    {
    if (oldArr[i] == 0)
    {
    count++;
    }
    }

    // 定义新数组长度
    int[] newArr = new int[oldArr.length - count];
    // 开始把非0的数存入新数组
    //这里用oldArr.length作为for循环遍历的条件,而newArr中显然没有这么多元素,当然会报错了。
    //增加一个变量j,赋值和打印的时候用它就OK了。
    int j = 0;
    for (int i = 0; i < oldArr.length; i++)
    {
    if (oldArr[i] == 0)
    {
    continue;
    }
    else
    {
    newArr[j] = oldArr[i];
    System.out.println(newArr[j]);
    j++;
    }
    }

    }
    }
      

  3.   

    newArr[i] = oldArr[i];
    好好看看这句代码。
      

  4.   

    支持楼上说的,newArr[j++] = oldArr[i];//j初值为0
      

  5.   

    楼主这会抛出数组越界异常。。当你i的值大于newArr[] 的长度时候,就会抛出。除非,你oldArr[]里面没有0。。
      

  6.   

    支持楼上的说法,数组下标的改变一定要符合具体对象。newArr[]与oldArr[]没有很好的分离,在导致了错误的产生。
      

  7.   

    newArr[i] = oldArr[i];这句话错误啊。你应该重新顶一个j=0;然后newArr[j]=oldArr[i] ;j++这样