gpt4 book ai didi

java - 如何使用 Lambda 将字符串数组转换为整数数组?

转载 作者:行者123 更新时间:2023-12-02 12:49:47 24 4
gpt4 key购买 nike

我正在尝试使用 lambda 表达式将字符串数组转换为整数数组。

我在下面提供了我的代码,以及我迄今为止所尝试的简要描述:

String [] inputData = userInput.split("\\s+");
Integer [] toSort = new Integer [] {};
try {
toSort = Arrays.asList(inputData).stream().mapToInt(Integer::parseInt).toArray();
}catch(NumberFormatException e) {
System.out.println("Error. Invalid input!\n" + e.getMessage());
}

我上面的lambda表达式是映射到int数组的表达式,这不是我想要的,编译此代码后我收到以下错误消息:

BubbleSort.java:13: error: incompatible types: int[] cannot be converted to Integer[]
toSort = Arrays.asList(inputData).stream().mapToInt(Integer::parseIn
t).toArray();

^
1 error

有没有一种简单的方法可以让我使用 lambda 或其他方法从字符串数组转换为整数数组?

最佳答案

正如其他人已经指出的,mapToInt 返回一个 IntStream,其 toArray 方法将返回 int[]而不是Integer[]。除此之外,还有一些需要改进的地方:

Integer [] toSort = new Integer [] {};

是一种不必要的复杂的初始化数组的方法。使用其中之一

Integer[] toSort = {};

Integer[] toSort = new Integer[0];

但如果您无论如何都要覆盖它,则根本不应该初始化它。如果您想为异常情况提供一个后备值,请在异常处理程序中进行赋值:

String[] inputData = userInput.split("\\s+");
Integer[] toSort;
try {
toSort = Arrays.stream(inputData).map(Integer::parseInt).toArray(Integer[]::new);
}catch(NumberFormatException e) {
System.out.println("Error. Invalid input!\n" + e.getMessage());
toSort=new Integer[0];
}

此外,请注意,您的情况不需要 String[] 数组:

Integer[] toSort;
try {
toSort = Pattern.compile("\\s+").splitAsStream(userInput)
.map(Integer::parseInt).toArray(Integer[]::new);
}catch(NumberFormatException e) {
System.out.println("Error. Invalid input!\n" + e.getMessage());
toSort=new Integer[0];
}

Patternjava.util.regex.Pattern它与 String.split 内部使用的类相同。

关于java - 如何使用 Lambda 将字符串数组转换为整数数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32529170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com