1.现在有如下一个数组:
Int oldarr[]={1,5,9,0,4,0,3,6,0,7,8,0};
要求将以上数组中的0项去掉,将不为0的值存入一个新的数组;
2.思路:
我们可以定义两个数组,旧数组中是原数组,新数组是旧数组中去掉0元素的其他元素;
要想打印新数组,必须动态初始化数组,且遍历的时候必须知道新数组的长度;
新数组长度可以用旧数组长度减去0元素的个数;
要想求出0元素的个数,用循环遍历旧数组即可;
最后将旧数组中非0元素赋值给新数组即可;
package Hello;
public class test {
public static void main(String[] args) {
//定义数组并初始化
int oldarr[]=new int[]{1,5,9,0,4,0,3,6,0,7,8,0};
//得到旧数组零的个数
int count=0;
for(int i=0;i<oldarr.length;i++){
if(oldarr[i]==0){
count++;
}
}
//定义新数组,由于这里需要得知新数组的长度,因此必须求出旧数组中零的个数
int newarr[]=new int[oldarr.length-count];
//遍历原来的旧数组
for(int i=0,j=0;i<oldarr.length;i++){
//将旧数组中不等于0的元素赋给新数组
if(oldarr[i]!=0){
newarr[j]=oldarr[i];
j++;
}
}
System.out.println("旧数组:");
for(int a:oldarr){
System.out.print(a+" ");
}
System.out.println();
System.out.println("新数组:");
for(int a:newarr){
System.out.print(a+" ");
}
}
}
结果为: