Search code examples
javaarraysintinputstream

Read integers separated with whitespace into int[] array


I read line with

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
reader.readLine();

Example input is

1 4 6 32 5

What is the fastest way to read the input and put it into an integer array int[] ?

I'm also looking for some one-line solution if possible.


Solution

  • You could use Scanner:

    Scanner scanner = new Scanner(System.in);
    List<Integer> list = new ArrayList<Integer>();
    while (scanner.hasNextInt())
      list.add(scanner.nextInt());
    int[] arr = list.toArray(new int[0]);
    

    Until we have closures in java, this is probably the shortest you can get.

    int[] arr = list.toArray(new int[0]); won't work because there's no conversion from Integer to int. You can't use int as a type argument for generics.

    But yeah If you are working with Java 8 then you can use Stream API for it with the below code snippet(Better way of doing things).

    int[] array = list.stream().mapToInt(i->i).toArray();