您的位置:首页 > 编程语言 > Java开发

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

2017-07-21 18:37 260 查看
现有如下一个数组:   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);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: