gpt4 book ai didi

java - 尝试将 List 转换为 List 时出错

转载 作者:行者123 更新时间:2023-12-01 07:44:01 25 4
gpt4 key购买 nike

我目前正在尝试转换 List<String>List<Integer>与溪流等等。但我不知道发生了什么;当它运行时,它会给我一些让我发疯的错误。

我已经尝试过我从 Java 中的 Streams 中了解到的一切(很差),也尝试过不使用它们,但问题是我想以一种功能性的方式来实现它。我给我的方法(leeFichero)一个字符串 f,它只是我的 txt 文件的路径。我想要该方法做的就是返回 List<Integer>以及其中的值。该文件的内容是这样的:

-3,-2,-1,0,1,2,3
1,3,5,7,9
100
2,4,6,8,10
 public static List<Integer> leeFichero(String f) {
List<String>lineas=null;
try {
BufferedReader bf = new BufferedReader(new FileReader(f));
lineas = bf.lines().collect(Collectors.toList());
bf.close();
} catch (IOException e) {
System.out.println(e.toString());
}
List<Integer> intList = lineas.stream().map(s -> Integer.parseInt(s)).collect(Collectors.toList());

return intList;
}

当我运行它时,它会给出以下错误消息:

Exception in thread "main" java.lang.NumberFormatException: For input string: "-3,-2,-1,0,1,2,3"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at ejercicios.ejercicio1.lambda$0(ejercicio1.java:108)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
at ejercicios.ejercicio1.leeFichero(ejercicio1.java:108)
at ejercicios.ejercicio1.main(ejercicio1.java:48)

最佳答案

你应该split String 的行使用分隔符,flatMap将它们收集为列表。

lineas = bf.lines()
.flatMap(s -> Arrays.stream(s.split(",")))
.collect(Collectors.toList());

然后返回List<Integer>映射为:

return lineas.stream()
.map(Integer::parseInt)
.collect(Collectors.toList());

关于java - 尝试将 List<String> 转换为 List<Integer> 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58492960/

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