【Java学习之路】如何去除数组里面的0

现有如下一个数组:   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}  

思路: 确定出不为0的个数,这样可以开辟新数组;从旧的数组之中,取出内容,并将其赋给新开辟的数组。

首先数是有默认值的,比如一个int类型的数组,如果没有赋值的话,它的默认值是0,所以如果一个数组的下标没有写满的话,那么多余出来的值就会是0,这样就与题意不符,所以我们创建的数组的长度正好是oldArr数组去掉0的长度。

我们应该先判断oldArr数组里面有多少个0或者有多少个不为0的数,这样我们就可以直到不为0的有多少个,从而可以一次定义一个等长的数组。

代码如下:

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 };
		int h = 0; // 设置一个变量作为增量
		// 循环读取oldArr数组的值
		for (int b : oldArr) {
			// 判断,如果oldArr数组的值不为0那么h就加1
			if (b != 0) {
				h++;
			}
		}
		// 得到了数组里不为0的个数,以此个数定义一个新数组,长度就是h
		int newArr[] = new int[h];
		// 这里偷个懒,不想从新定义增量了,所以把增量的值改为0
		h = 0;
		// 在次循环读取oldArr数组的值
		for (int c : oldArr) {
			// 把不为0的值写入到newArr数组里面
			if (c != 0) {
				newArr[h] = c;
				h++;// h作为newArr数组的下标,没写如一个值,下标h加1
			}
		}
		// 循环打印newArr数组的值
		for (int d : newArr) {
			System.out.println(d);
		}
	}
}


  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值