尝试将列表转换为数组时出错[]

时间:2015-12-31 01:58:57

标签: java arrays list int type-conversion

我试图将我的列表转换为数组时引用了this,但我似乎无法让它工作。这就是我所拥有的:

    int values[] = Arrays.asList(str.replaceAll("[^-?0-9]+", " ").trim().split(" ")).toArray();

我得到的错误(类型不匹配)表明我应该将值[]的类型从int更改为object

最终结果应该只是一个数字数组。 示例:a-9000xyz89将是一个数组,其中[-9000,89]为值

2 个答案:

答案 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 等字符串,因为它会产生非整数