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

int a[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
不如说我想去除0

// 答案是太能了:不用集合一样办到:(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:深复制,算了!
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-25
数组是没法删除其中的元素的,你在定义数组的时候,长度已经给定义好了 你可以采取中间变量 把数组的内容重新读一遍 需要移除的不需要读。或者用arrylist arrylist的长度可以改变 数组的定义好了 是不可以改变的本回答被网友采纳
第2个回答  推荐于2017-12-23
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];
        }
   }
}

本回答被网友采纳
第3个回答  2014-12-24

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

List<Integer> tempList = new ArrayList();
for(int n:a){
    if(n!=0){
        tempList.add(n);
    }
}
Integer[] newArr = tempList.toArray(new Integer[0]);

第4个回答  2014-12-24
写for循环 再定义一个数组去接收移除0的数组就可以了
相似回答