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



我正在读取一个字符串,作为一整行数字,用空格分隔,即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++;
}

如果你有一个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);

这将遍历拆分数组中的每个小字符串,将其转换为整数,然后将其放入新数组中。

您不需要分隔符。更改此设置:

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

对此:

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

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

或者,现在大多数人只会使用int[],正如交叉安全所指出的那样。

您可以使用以下代码将由空格分隔的数字组成的 String 转换为CC_7:

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();
    }
}

Java 8 风格的解决方案:

String input = "1 2 3 4 5";
int[] numbers = Arrays.stream(input.split("\s+"))
        .mapToInt(Integer::parseInt).toArray();

相关内容

  • 没有找到相关文章

最新更新