int[] a={1,2,3,4,5};我现在想删除 3再输出这个数组{1,2,4,5}
而不是{1,2,4,5,5}

解决方案 »

  1.   

    数组大小不能变化,这个题目就只能新建一个数组把需要的数赋值进去返回给调用者了public class Test { public static void main(String[] args) {
    int[] arr = {1,2,3,4,5};
    arr = delArr(arr, 3);
    for (int i = 0; i < arr.length; i++) {
    System.out.print(arr[i] + " ");
    }
    }

    public static int[] delArr(int[] arr, int index){
    int[] a = new int[arr.length - 1];
    int temp = 0;
    for(int i = 0; i < arr.length; i++){
    if(arr[i] == index)
    continue;
    a[temp++] = arr[i];
    }
    return a;
    }
    }
      

  2.   


    import java.util.ArrayList;
    import java.util.List;public class TestArray {
    public static void main(String args[]){
    int a[] ={1,2,3,4,5};
    List<Integer> list = new ArrayList<Integer>();
    for(int i = 0; i < a.length; i++)
    list.add(a[i]);
    list.remove(2);
    System.out.println(list);
    }
    }
      

  3.   

    public class ModifyArray
    {
    public static void main(String[] args)
    {
    int[] a = { 1, 2, 3, 4, 5 };
    int index = binarySearch(a, 3);
    int[] b = new int[a.length - 1];
    for (int i = 0; i < a.length; i++)
    {
    if (i <= index)
    {
    b[i] = a[i];
    }
    else
    {
    b[i - 1] = a[i];
    }
    }
    } /**
     * 二分查找
     * 
     * @param a
     * @param key
     * @return
     */
    public static int binarySearch(int[] a, int key)
    {
    if (a.length == 0)
    return -1;
    // 开始位置
    int first = 0;
    // 结束位置
    int last = a.length - 1;
    // 中间位置
    int mid;
    // 如果开始时,小于则结束.
    while (first <= last)
    {
    mid = (first + last) / 2;
    // 如果等于key,返回这个数在数组中的位置.
    if (a[mid] == key)
    return mid;
    // 如果大于key,则在左边.
    if (a[mid] > key)
    last = mid - 1;
    // 如果小于key,则在右边
    if (a[mid] < key)
    first = mid + 1;
    }
    return -1;
    }}
      

  4.   

    int[] a={1,2,3,4,5};
    StringBuffer sb = new StringBuffer();
    for(int i = 0; i < a.length; i++){
    sb.append(a[i]).append(",");
    }
    System.out.println(sb.toString().replaceAll("3,", ""));
      

  5.   

    学习清洁工的方法:
    int[] a={1,2,3,4,5};
    StringBuffer sb = new StringBuffer();
    for(int i = 0; i < a.length; i++){
    sb.append(",").append(a[i]);
    }
    System.out.println(sb.toString().replaceAll("3,", "").substring(1));
      

  6.   

    最好用List  public static void main(String[] args) {
        int[] a = {
            1, 2, 3, 4, 5
        };
        int[] b = deleteAt(a, 2); // 具体要删的位置在哪里,自己计算,这里只是抛砖引玉
        System.out.println(Arrays.toString(b));
      }  public static int[] deleteAt(int[] array, int index) {
        int[] newArray = new int[array.length - 1];
        System.arraycopy(array, 0, newArray, 0, index);
        System.arraycopy(array, index + 1, newArray, index, array.length - index - 1);
        return newArray;
      }
      

  7.   


    如果对数据结构没有要求,可以考虑List对象,会自动帮你清理如果只想用int[],那你只能自己写移动和清理的代码,数组对象本身不提供这类风发
      

  8.   

    int[] a = {1, 2, 3, 4, 5};
    int[] b = new int[4];
    System.arraycopy(a, 0, b, 0, 2);
    System.arraycopy(a, 3, b, 2, 2);
    for(int l:b){
    System.out.println(l);
    }
      

  9.   

           int[] a = { 1, 2, 3, 4, 5 };
                List<int> list = new List<int>();
                for (int i = 0; i < a.Length; i++)
                {
                    list.Add(a[i]);                list.Remove(3);
                  
                }            for (int i = 0; i < list.Count; i++)
                {
                      Console.Write(list[i] + "  ");
                }
                Console.ReadLine();C#这样写也可以哦
      

  10.   

    先考虑你适合哪个方法!!适当折取!
    如果对数据结构没有要求,可以考虑List对象,会自动帮你清理如果只想用int[],那你只能自己写移动和清理的代码,数组对象本身不提供!!
      

  11.   

    学习清洁工的方法:
    Java code        int[] a={1,2,3,4,5};
            StringBuffer sb = new StringBuffer();
            for(int i = 0; i < a.length; i++){
                sb.append(",").append(a[i]);
            }
            System.out.println(sb.toString().replaceAll("3,", "").substring(1));
      

  12.   


    int [] srcs={1,2,3,4,5};
    int n=4;
    if(n<srcs.length){
    int [] tars=new int[4];
    System.arraycopy(srcs, 0, tars, 0, n);
    System.arraycopy(srcs, n+1, tars, n, srcs.length-n-1);
    System.out.println(Arrays.toString(tars));
    }
      

  13.   

    public static void main(String arg[]){
    List<Integer> list=deleteArrayByObj(Arrays.<Integer>asList(1,2,3,4,5),3);
    System.out.println(list);
    }

    public static List  deleteArrayByObj(List srcList,Object obj){
    List list=new ArrayList();
    list.addAll(srcList);
    if(list.contains(obj))
    list.remove(obj);
    return list;
    }
      

  14.   

    我还想问一下,,这时候数组arr 的长度是 4 还是5
      

  15.   

    刚才测试了一下,数组arr 的长度是4
    但是为什么会是4呢???