如何定义一个未知输入数字个数的数组?

初学者:如果你想把一串数输入数组,但是你又不确定输入的个数,那我们怎么定义这个数组?
我是这样定义的

img

可以,然后循环给数组赋值

for(int i=0;i<n;i++)
  arr[i] = s.nextInt();

java有list可用

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("依次输入数字 end 结束");
    List<Integer> intList = new ArrayList<>();
    String number = sc.nextLine();
    while (!"end".equals(number)){
        intList.add(Integer.parseInt(number));
        number=sc.nextLine();
    }
    Integer[] intArray = new Integer[intList.size()];
    intList.toArray(intArray);
    for (Integer integer : intArray) {
        System.out.println(integer);
    }
}

非常棒,很有探索精神,我正面回答:可以通过复制数组扩
例子如下:

public class Main {
    public static void main(String[] args) {
        Main main = new Main();

        for(int i = 0; i < 50; i++){
            main.addExpand(i);
        }
        main.printArr();
    }

    int size = 10;
    int[] arr = new int[size];//假设初始大小是10
    int idx = 0;
    private void addExpand(int item){
        if(idx == size){
            expand();
        }
        arr[idx++]=item;
    }

    private void printArr(){
        for(int i = 0; i < idx; i++){
            System.out.print(arr[i]);
            System.out.print(" ");
        }
        System.out.println();
    }

    private void expand(){
        size = size*2;//假设扩到2倍
        int [] copy = new int[size];
        //复制,从arr索引0到copy索引0,arr索引1到copy索引1......,一直复制到arr.length个到copy
        System.arraycopy(arr,0,copy,0,arr.length);
        arr = copy;
    }
}

我这属于ArrayList简单版,ArrayList集合类内部就是这样写的(扩容默认1.5倍)

如果用数组,需要先确定数组的大小才能使用。
对于不确定输入几个数。
1、定义一个较大长度的数组,记录一下输入的数的个数count。
后面操作数组,最大下标到count-1.
2、用集合。可以随意的向集合放不确定的数。

import java.util.ArrayList;
import java.util.List;
public class Main {
    public static void main(String[] args) {
        List<Integer> list=new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
    }
}