解决方案 »

  1.   

    可以先初始化一个一定长度的数据比如 int[] a = new int[100];
    当接受的元素个数达到数组长度时,创建一个更大的数组,如 new int[200],将原来数组的元素复制过来。
    以此反复。
      

  2.   

    你可以设定数组的最大值,比如int类型的封装类Integer有一个常量是最大值,你可以用这个值设为数组长度,因为现实中输入一些数不会超过这个常量的,比如;  int array []  = new int [Integer.MAX_VALUE];
      

  3.   

    你可以使用List接口来解决这个问题,该接口下的子类ArrayList可以自动增容。整数的话可以这么声明:
    List<Integer> list = new ArrayList<Integer>()然后使用add()方法添加元素。
      

  4.   

    同意楼上说的,可以使用List接口实现。
    我用了一个笨办法,通过数组复制来实现。import java.util.*;public class ArrayTest {
    public static void main(String[] args){
    int[] a= new int[2];
    int[] b;
    Scanner scanner = new Scanner(System.in);
    int input =0;
    int i =0;
    while((input=scanner.nextInt())>=0){
    a[i]=input;
    i++;
    if(i==a.length){
    b= new int[a.length*2];
    System.arraycopy(a, 0, b, 0, a.length);
    a=b;
    System.out.println("length expands to "+a.length);
    }
    }

    System.out.printf("%d element(s) entered\n",i);
    ;
    if(i < a.length){
    int[] c = new int[i];
    System.arraycopy(a, 0, c, 0, i);
    a=c;
    }

    System.out.println("loop ended");
    for (int e : a)
    System.out.print(e+"\t");

    }}
      

  5.   

    +1
    +1,然后直接toArray()就能得到数组类型了
      

  6.   

    直接用ArrayList就可以了啊,ArrayList源代码  public ArrayList(int initialCapacity) {
    super();
            if (initialCapacity < 0)
                throw new IllegalArgumentException("Illegal Capacity: "+
                                                   initialCapacity);
    this.elementData = new Object[initialCapacity];
        }//有一个初始化大小,默认是10
     public ArrayList() {
    this(10);
        }//当你要添加数据的时候,如果内容空间不够,会调用ensureCapacity进行扩容。
    public boolean add(E e) {
    ensureCapacity(size + 1);  // Increments modCount!!
    elementData[size++] = e;
    return true;
        }
    //会调用ensureCapacity方法进行扩容
      public void ensureCapacity(int minCapacity) {
    modCount++;
    int oldCapacity = elementData.length;
    if (minCapacity > oldCapacity) {
        Object oldData[] = elementData;
        int newCapacity = (oldCapacity * 3)/2 + 1;
             if (newCapacity < minCapacity)
    newCapacity = minCapacity;
                // minCapacity is usually close to size, so this is a win:
                elementData = Arrays.copyOf(elementData, newCapacity);
    }
        }
      

  7.   

    总结一下上面:要么用ArrayList实现,要么自己修改一下ArrayList的源码。非常感谢!!!!