将字符串转换为整数数组,将字符串st =“1 2 3 4 5”转换为ar = [1,2,3,4,5]

时间:2014-12-08 14:52:01

标签: java arrays string stringtokenizer parseint

我正在读一个字符串,作为整行数字,用空格分隔,即1 2 3 4 5。我想将它们转换为整数数组,以便我可以操纵它们。但是这段代码不起作用。它说不兼容的类型。

String str = br.readLine();
int[] array = new int[4];
StringTokenizer tok = new StringTokenizer(str," ", true);
boolean expectDelim = false;
int i = 0;

while (tok.hasMoreTokens()) {
    String token = tok.nextToken();
    ar[i] = Integer.parseInt(token);
    i++;
}

4 个答案:

答案 0 :(得分:5)

如果您有String s = "1 2 3 4 5",那么您可以将其拆分为单独的位:

String[] bits = s.split(" ");

现在你必须通过转换它们来将它们放入int[]

int[] nums = new int[bits.length];
int i=0;
for (String s: bits)
    nums[i++] = Integer.parseInt(s);

这将循环遍历split数组中的每个小字符串,将其转换为整数,并将其放入新数组中。

答案 1 :(得分:2)

你不需要分隔符。改变这个:

StringTokenizer tok = new StringTokenizer(str," ", true);

到此:

StringTokenizer tok = new StringTokenizer(str," ");

您的代码中发生的事情是,它试图将(空格)解析为int

或者,现在大多数人只会使用String.split(...),正如chiastic-security所指出的那样。

答案 2 :(得分:1)

Java 8风格解决方案:

String input = "1 2 3 4 5";

int[] numbers = Arrays.stream(input.split("\\s+"))
        .mapToInt(Integer::parseInt).toArray();

答案 3 :(得分:1)

您可以使用以下代码将由空格分隔的数字组成的字符串转换为int[]

import static java.util.Arrays.stream;

public class ConvertString {
    public static void main(final String... args) {
        final String s = "1 2 3 4 5";
        final int[] numbers = stream(s.split("\\s+")).mapToInt(Integer::parseInt).toArray();

        // Print it as a demo.
        for (final int number : numbers)
            System.out.format("%s ", number);
        System.out.println();
    }
}