【发布时间】:2014-12-08 14:52:00
【问题描述】:
我正在读取一个字符串,作为一整行数字,以空格分隔,即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++;
}
【问题讨论】:
-
“不兼容的类型” - 在哪一行?就目前而言,这不会编译:你混合了
ar和array。请给我们一个完整的样品!无论如何,你的数组对于 12345 来说太短了:为什么不使用 ArrayList? -
在哪一行出现编译错误
-
另外,the JDK 说:“StringTokenizer 是一个遗留类,出于兼容性原因,尽管不鼓励在新代码中使用它。建议任何寻求此功能的人使用 String 的 split 方法或 java.util.regex 包。"
-
您也在 StringTokenizer 构造函数中传递 true 。因此,您将分隔符作为令牌返回。这可能不是你想要的。
-
我无法重现您的问题,我得到 NumberFormatExeption 是因为您决定 StringTokenizer 还应该通过使用
true作为其构造函数的最后一个参数来返回分隔符(空格)。此外,“1 2 3 4 5”代表 5 个元素,因此大小为4的数组将无法容纳所有元素。
标签: java arrays string stringtokenizer parseint