我试图将我的列表转换为数组时引用了this,但我似乎无法让它工作。这就是我所拥有的:
int values[] = Arrays.asList(str.replaceAll("[^-?0-9]+", " ").trim().split(" ")).toArray();
我得到的错误(类型不匹配)表明我应该将值[]的类型从int
更改为object
最终结果应该只是一个数字数组。 示例:a-9000xyz89将是一个数组,其中[-9000,89]为值
答案 0 :(得分:3)
String#split
将返回String[]
而不是int[]
。您必须迭代String[]
并创建int[]
。此外,您不需要使用Arrays.asList
将数组转换为列表。
例如,
String str = "1 2 3 4";
String arr[] = str.split(" ");
int[] ans = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
ans[i] = Integer.parseInt(arr[i]);
}
System.out.println(Arrays.toString(ans));
<强>输出强>
[1, 2, 3, 4]
修改
当我删除
toArray()
和我时,我收到同样的错误 更改values[] to a String[]. String values[] = Arrays.asList(question.replaceAll("[^-?0-9]+", " ").trim().split(" "));
请注意,您的案例中的Arrays.asList
将返回List<String>
,但values
的类型为String[]
。
您可以直接将split
的结果存储在值
String values[] = question.replaceAll("[^-?0-9]+", " ").trim().split(" ");
答案 1 :(得分:0)
以下将适用于Java 8
int[] values = Arrays.stream(str.replaceAll("[^-?0-9]+", " ").trim().split(" ")).mapToInt(Integer::parseInt).toArray();
注意 - [^-?0-9]+
不支持 a-90-00xyz89 或 a-9000x-yz89 等字符串,因为它会产生非整数{ p>