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