java中怎么在数组中去除某个数字?

inta[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};不如说我想去除0... int a[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
不如说我想去除0
展开
 我来答
百毒千毒
2017-12-23 · TA获得超过4737个赞
知道大有可为答主
回答量:2504
采纳率:88%
帮助的人:657万
展开全部
// 答案是太能了:不用集合一样办到:(ArryList集合底层就是这么弄的)
// 方法很多种,软copy和硬copy,还有字符串桥接,随便举两种吧
public class ArrayTest {
public static void main(String[] args) {
int a1[]={1,3,4,5,0,0,9,6,0,5,4,7,6,7,0,5};
int a2[] = { 1, 0, 5,0,6,0,4, 1, 0 };

//测试第一种办法:
System.out.println("原数组:");
for (int n : a1)
System.out.print(n + ",");
// 删除元素!
a1=volume(a1,0);
System.out.println("\n现数组:");
for (int n : a1)
System.out.print(n + ",");

System.out.println("\n\n-----------------分割线--------------------\n");

//测试第二种办法:
System.out.println("原数组:");
for (int n : a2)
System.out.print(n + ",");
// 删除元素!
a2 = value(a2, 0);
System.out.println("\n现数组:");
for (int n : a2)
System.out.print(n + ",");

}// 方法1,浅复制!
private static int[] volume(int[] arr, int key) {
int count = 0;
for (int i = 0, j = arr.length - 1; i <= j; i++, j--) {
if (arr[i] == key && i != j)
count++;
if (arr[j] == key && i != j)
count++;
if (arr[i] == key && i == j)
count++;
}
int nrr[] = new int[arr.length - count];
count = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == key)
continue;
else 
nrr[count++] = arr[i];
}
return arr = nrr;
}//方法2:这方法最简单,的搞法,用个字符串桥接一下即可!
private static int[] value(int[] arr, int key) {
StringBuilder str=new StringBuilder();
for (int i = 0; i < arr.length; i++) 
if(arr[i]!=key)
str.append(arr[i]);
char[] chs=new String(str).toCharArray();
int[] orr=new int[chs.length];
for (int i = 0; i < orr.length; i++) {
orr[i]=chs[i]-'0';
}
return arr=orr;
}//方法3:深复制,算了!
}

阿偶阿偶o
推荐于2017-11-25
知道答主
回答量:19
采纳率:100%
帮助的人:7.9万
展开全部
数组是没法删除其中的元素的,你在定义数组的时候,长度已经给定义好了 你可以采取中间变量 把数组的内容重新读一遍 需要移除的不需要读。或者用arrylist arrylist的长度可以改变 数组的定义好了 是不可以改变的
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
0808xyj
推荐于2017-12-23 · TA获得超过1891个赞
知道大有可为答主
回答量:1237
采纳率:100%
帮助的人:1079万
展开全部
public void delete(int n)//删除数组中n的值
{
    for (int i = 0; i < a.length; i++) {
      if(a[i] == n)
     {
         for(int j = i; j < a.length-1; j++)
        {
               a[j] = a[j+1];
        }
   }
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友211658b42
2014-12-24 · TA获得超过3383个赞
知道小有建树答主
回答量:606
采纳率:100%
帮助的人:601万
展开全部

去除之后数据长度变短可以么?可以的话就用如下代码:

List<Integer> tempList = new ArrayList();
for(int n:a){
    if(n!=0){
        tempList.add(n);
    }
}
Integer[] newArr = tempList.toArray(new Integer[0]);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-12-24
展开全部
写for循环 再定义一个数组去接收移除0的数组就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式