一个数组{11,22,1,33,1,1,44,55,66,1,77,1,1,88}
要求将其中为1的元素值给去掉,通过合适的代码得到如下的新数组
{11,22,33,44,55,66,77,88}
在群里遇到了这个问题,开始觉得很简单,因为有集合啊。不过突然想到如果单独用数组解决的话,就有点难度了,特别是1不止一个。
用数组的时候还纠结于怎么定义新的数组的长度,后来被人提醒才明白。根本不用管它,只要不小于原来的数组,使他盛不下新的数组,导致数组越界就行。
在输出的时候再解决它。
使用集合的方法:
public static void main(String[] args) {
int a[]={11,22,1,33,1,1,44,55,66,1,77,1,1,88};
List list =new ArrayList();
for (int i = 0; i < a.length; i++) {
if (a[i]!=1) {
list.add(a[i]);
}
}
for (Object object : list) {
System.out.print(object+" ");
}
}
这个简答,不必细说。
先说下我开始的代码:
int a[]={11,22,1,33,1,1,44,55,66,1,77,1,1,88};
int c[]=new int[a.length];
int i=0;
int count=0;
for (int aa:a) {
if (aa!=1) {
c[i]=aa;
i++;
}
}
for ( i = 0; i < c.length; i++) {
System.out.print(c[i]+",");
}
这样的结果 11,22,33,44,55,66,77,88,0,0,0,0,0,
多了几个0.
怎么把0去掉。
添加一个变量,约束新的数组输出。
int a[]={11,22,1,33,1,1,44,55,66,1,77,1,1,88};
int c[]=new int[a.length];
int i=0;
int count=0;
for (int aa:a) {
if (aa!=1) {
c[i]=aa;
i++;
count++;
}
}
for ( i = 0; i < count; i++) {
System.out.print(c[i]+",");
}
不知道这算不算投机。没有实现新的数组,只是实现了数值的输出。
那如果数组需要删除你多个不同元素呢?
比如:
int a[]={11,22,1,33,1,1,44,2,2,55,3,66,1,77,1,1,88};
删除数组中的1,2,3、很简单,只需要修改if()条件就行。
if (aa!=1&&aa!=2&&aa!=3)
具体的就不写了。
热门评论
count和c[]同时进行的,没有办法把数组诺后,除非两次for循环,那就没有必要了。
先获取count再定义C[i]长度,最后把≠1的数存入C[i]