为了账号安全,请及时绑定邮箱和手机立即绑定

要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,输出生成的新数组,可是我的报错,,求解答,程序越简单越好,谢谢各位大神了

要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,输出生成的新数组,可是我的报错,,求解答,程序越简单越好,谢谢各位大神了

皓婆子 2015-09-14 18:37:51
public class Demo5 { public static void main(String[] args) { // TODO Auto-generated method stub        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){        continue;        }        int newArr=oldArr[i];                        }               System.out.println("int newArr[]={"+newArr+"}");
查看完整描述

5 回答

?
利他

TA贡献1条经验 获得超1个赞

package com.bjlemon.task.day08;

import java.util.Arrays;

/**
 * @author 利他
 * @version 1.0
 * @date 2018/10/13 16:42
 */
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};

        //从小到大排序,0会排在最前面
        Arrays.sort(oldArr);

        //统计原数组中第一个非0元素的下标
        int index = 0;

        //统计原数组中0的个数
        int zeros = 0;

        //遍历数组
        for (int i = 0; i < oldArr.length; i++) {

            //如果当前元素等于0,计数加一,并跳出本次循环,否则第一个非0的元素为本次循环的次数,并跳出这个循环
            if (oldArr[i] == 0) {
                zeros++;
                continue;
            } else {
                index = i;
                break;
            }
        }

        //定义新的数组,大小为旧数组的长度减去元素为0的个数
        int[] newArr = new int[oldArr.length - zeros];

        /*
        public static void arraycopy(
                                    Object src,  //源数组
                                    int srcPos,  //源数组的起始位置
                                    Object dest, //目标数组
                                    int destPos, //目标数组的起始位置
                                    int length   //复制长度
                                   )
        */
        //调用System.arraycopy()方法将原数组数组中的非0数据拷贝到新数组中
        System.arraycopy(oldArr, index, newArr, 0, newArr.length);

        //循环输出newArr数组中的每个元素
        for (int i : newArr) {
            System.out.print(i + " ");
        }
    }
}


查看完整回答
1 反对 回复 2018-10-13
?
职场小菜鸡

TA贡献1条经验 获得超1个赞

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 newarr[]=new int[oldarr.length];
	int j=0;
	for(int i=0;i<oldarr.length;i++){
		if(oldarr[i]!=0){
			newarr[j]=oldarr[i];
			j++;
		}
	}
	for(int k=0;k<j;k++){
		System.out.print(newarr[k]+" ");
	}
}


查看完整回答
1 反对 回复 2017-06-27
?
yanrun

TA贡献317条经验 获得超240个赞

public static void main(String[] args) {
		 int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
		 Arrays.sort(oldArr); //从小到大排序,0在最前面
		 int index = 0;//原数组中第一个非0元素的下标
		 int zeros = 0;//原数组中0的个数
		 for(int i = 0; i < oldArr.length; i++) {
			 if(oldArr[i] == 0) {
				 zeros++;
				 continue;
			 } else {
				 index = i;
				 break;
			 }
		 }
		 int[] newArr = new int[oldArr.length - zeros];
		 System.arraycopy(oldArr, index, newArr, 0, newArr.length);//调用系统方法将原数组数组中的非0数据拷贝到新数组中
		 for(int i : newArr) {
			 System.out.print(i + " ");
		 }
	}


查看完整回答
反对 回复 2017-06-27
?
皓婆子

TA贡献4条经验 获得超0个赞

import java.util.Arrays;

public class Demo4_6_3 {


public static void main(String[] args) {

// TODO Auto-generated method stub

int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};

int newArr[]=new int[oldArr.length];

int k=0;

for(int i=0;i<oldArr.length;i++){

if(oldArr[i]!=0){

newArr[k]=oldArr[i];

k++;

}

}

System.out.println(Arrays.toString(newArr));


}


}

请问我这个程序输出怎么是1,3,4,5,6,6,5,4,7,6,7,5,0,0,0,0,啊

查看完整回答
反对 回复 2015-09-14
  • 职场小菜鸡
    职场小菜鸡
    因为你的newarr初始化长度是oldarr,输出时把newarr初始化默认的0给打印了
?
donlv

TA贡献13条经验 获得超2个赞

int o[]={1,3,4,5,0,0,6,6};
    int n[]=new int[o.length];
    int k=0;                                   //用于计算n[]下标的变量
    for(int i=0;i<o.length;i++){
        if(o[i]!=0){                           //判断原数组是否为0,不为0把原数据赋值给新数组
          n[k]=o[i];
          System.out.print(n[k]+"\t");          

          k++;
           }
    }


查看完整回答
反对 回复 2015-09-14
  • 5 回答
  • 0 关注
  • 9098 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信