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