在数组中间位置添加新元素。当数组长度为偶数时,在坐标为数组长度一半的元素后面添加新元素,当数组长度为奇数时,在中间元素的后面添加新元素。例如:arr1为{1,2,5,8}新元素为3,结果为{1,2,3,5,8};arr2为{1,3,4}新元素为5,结果为{1,3,5,4}。  最好将全部代码敲出来  谢谢

解决方案 »

  1.   

      数组:java数组的长度是固定的,在同一个数组中只能存放相同类型的数据,可以是基本数据类型,也可  以存放引用类型的数据。  java集合:存入于java.util包中,它不能存放基本类型数据,而只能存放对象的引用。这个用什么数据类型存放还是个问题,期待高人解决!
      

  2.   

    实际就是在(size+1)/2的位置进行插入
    但是因为数组的长度是不能变的,所以只好预先定义一个足够长的数组来存储public class A {
        private final int maxLen = 100;
        private int[] a = new int[maxLen];
        private int size = 0;
        
        void print() {
            for(int i=0; i<size; i++)
                System.out.print(a[i]+" ");
            System.out.println();
        }
        
        void add(int x) { a[size++] = x; }    int size() { return size; }
        
        void insert(int x, int i) {
            System.arraycopy(a, i, a, i+1, size-i);
            a[i] = x;
            size++;
        }
        
        void insertMiddle(int x) {
            insert(x, (size+1)/2);
        }    public static void main(String[] args) {
            A a = new A();
            
            for(int x : new int[]{1,2,5,8}) a.add(x);
            a.print(); //1 2 5 8
            a.insertMiddle(3);
            a.print(); //1 2 3 5 8
            
            a = new A();
            for(int x : new int[]{1,3,4}) a.add(x);
            a.print(); //1 3 4
            a.insertMiddle(5);
            a.print(); //1 3 5 4
        }}
      

  3.   

        public static int[] insertOne(int[] oldarray,int theone){        
            int[] newarray = new int[oldarray.length+1];
            for(int i = 0;i<=oldarray.length;i++){
                if(i<(oldarray.length+1)/2){
                    newarray[i]=oldarray[i];
                }else if(i==(oldarray.length+1)/2){
                    newarray[i]=theone;
                }else{
                    newarray[i]=oldarray[i-1];
                }
            }
            return newarray;
        }
      

  4.   

    我这样想的//数组的前一半
    private static List<String> frontStrs = new ArrayList<String>();
    //数组的后一半
    private static Stack<String> rearStrs = new Stack<String>();
    //要返回的数组,也就是 frontStrs  + rearStrs 
    private static String[] resStrs = null;//不过问题是 frontStrs  + rearStrs 不知道怎么实现/**
    * 用来初始化前一半和后一半  
    */
    private void initStrs(String[] arr){ //保证arr至少有两个 

    if(arr.length == 1){
    //???
    }else
    if(arr.length % 2 == 0){
    for(int i = 0 ; i < arr.length/2 ; i ++ ){
    frontStrs.add(arr[i]);
    // rearStrs.add(arr[i + arr.length/2]);
    rearStrs.push(arr[i + arr.length/2]);
    }
    }else{
    for(int i = 0 ; i < arr.length/2 ; i ++ ){
    frontStrs.add(arr[i]);
    rearStrs.push(arr[i + arr.length/2]);
    }
    frontStrs.add( arr[arr.length/2]);
    }

    }
    /**
    * 插入字符串
    */public void addStrToArr(String[] arr , String str){

    if(arr != null && arr.length != 0){
    if(){
    }


    }else{
    //
    }

    }
    public void addStrToArr(String[] arr , String str){

    if(arr != null && arr.length != 0){
    int length = arr.length ;

    if(length % 2 == 0){ // 如果是偶数
    rearStrs.push(str);
    }else{
    frontStrs.add(str);
    }


    }else{
    //
    }

    }

    还没测 ,等一会测一下 
      

  5.   

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;public class ArrayTest { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
          System.out.println(addNewElement(new Integer[]{1,2,5,8},3));
          System.out.println(addNewElement(new Integer[]{1,3,4},5));
    } /**
     * 
     * @param source
     * @param element
     * @return
     */
    private static List<?> addNewElement(Integer[] source, Integer element) { List<Integer> l = new ArrayList<Integer>(Arrays.asList(source));

    int index = 0; if (l.size() % 2 == 0) {
    index = l.size() / 2;
    } else {
    index = (l.size() +1 ) / 2;
    }

    l.add(index, element);
    return  l;
    }}
      

  6.   

    ArrayList ls = new ArrayList();
    ls.add();
    ls.add();
    ls.add();
    .....
    if(ls.size()%2==0)
    ls.insert(ls.size()/2,x);
    else
    ls.insert(ls.size()/2+1,x);
      

  7.   

    方法还不对
    改一下 private static int arrlength = 0;

    public void addStrToArr( String str){


    if(arrlength % 2 == 0){ // 如果是偶数
    rearStrs.push(str);
    }else{
    frontStrs.add(str);
    }
    }
    private void initStrs(String[] arr){ //保证arr至少有两个 
    arrlength = arr.length;
    ……这样就不需要插入后的新数组了,只要最后把 frontStrs  和 rearStrs 中的字符串
    按照 frontStrs  顺序取, rearStrs 。pop ,然后连一起就可以了
      

  8.   

    晕,我在ArrayList里找insert方法,找了半天没找到,原来是叫add
    那就可以直接使用ArrayList了
    不管是奇数还是偶数,插入位置都是 (size+1)/2ArrayList<Integer> a = ArrayList<Integer>();
    //...
    a.add((a.size()+1)/2, element);