Read integers separated with whitespace into int[] array

前端 未结 10 1934
陌清茗
陌清茗 2020-12-13 19:13

I read line with

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

Example input is

10条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-13 19:28

    You could pre-compiled regex Pattern also to split String.

        Pattern pattern = Pattern.compile("(\\d+)\\s+"); //$NON-NLS-1$
        Matcher matcher = pattern.matcher(line);
        List numbers = new LinkedList();
    
        while (matcher.find()) {
            numbers.add(Integer.valueOf(matcher.group(1)));
        }
        Integer[] output = numbers.toArray(new Integer[numbers.size()]);
    

    Or you could also use pattern.split directly

        Pattern pattern = Pattern.compile("(\\d+)"); //$NON-NLS-1$
        String[] numberAsString = pattern.split(line);
        int[] numbers = new int[numberAsString.length];
        for (int i = 0; i < numberAsString.length; i++) {
            numbers[i] = Integer.valueOf(numberAsString[i]).intValue();
        }
    

    Gotta love regex :D

提交回复
热议问题