我需要一些关于使用java lambdas将字符串数组列表转换为双数组列表的帮助,现在我已经尝试了这些。
List<Double> Doublevalues1 = valueItemsToList.stream().mapToDouble(Double::parseDouble).boxed().collect(Collectors.toList());
这一般
for(int j = 0; j< valueItemsToList.size();j++)
{
Doublevalues1.add(Double.parseDouble(valueItemsToList.get(j)));
//Doublevalues.add(Double.valueOf(valueItemsToList.get(j)));
}
任何人都可以告诉我我哪里出错了这不是重复的答案我尝试了所有可能性我已经通过网但但没有一个给了我正确答案很高兴,如果你能帮助。 这是我的完整代码
public class Stock {
public static void main(String[] args) {
// TODO code application logic here
String buff[] = new String[4988];
int i = 0;
File file = new File("C:\\Users\\admin\\Desktop\\data.csv");
try{
FileInputStream fis = new FileInputStream(file);
BufferedReader dis = new BufferedReader(new InputStreamReader(fis));
String s;
while ((s = dis.readLine()) != null) {
// System.out.println(s);
buff[i] = s;
i++;
// String[] s1 = s.split(",");
}
}
catch(Exception e)
{
System.out.println("error happend at block try at fileinput");
}
//converting array string to arraylist
List<String> valueItemsToList = Arrays.asList(buff);
//valueItemsToList.forEach(System.out::println);
List<Double> Doublevalues1 = new ArrayList<Double>();// valueItemsToList.stream().mapToDouble(Double::parseDouble).boxed().collect(Collectors.toList());
for(int j = 0; j< valueItemsToList.size();j++)
{
Doublevalues1.add(Double.parseDouble(valueItemsToList.get(j)));
//Doublevalues.add(Double.valueOf(valueItemsToList.get(j)));
}
Doublevalues1.forEach(System.out::println);
}
}
错误: 它有点笨拙在这里完成
线程中的异常&#34; main&#34;显示java.lang.NullPointerException at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1838) at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110) 在java.lang.Double.parseDouble(Double.java:538) 在stock.Stock.main(Stock.java:53) C:\ Users \ admin \ AppData \ Local \ NetBeans \ Cache \ 8.1 \ executor-snippets \ run.xml:53:Java返回:1 BUILD FAILED(总时间:2秒)
答案 0 :(得分:0)
同意@ bayou.io,使用ArrayList<String>
代替buff[]
(因为如果输入文件中的行数少于4988,那么你将获得NullPointerExcetion,如果你有更多行,那么你将获得ArrayIndexOutOfBoundsException)
或将null
检查在String to Double转换之前,例如
for(int j = 0; j< valueItemsToList.size();j++)
{
if(valueItemsToList.get(j) != null){ // NULL Check
Doublevalues1.add(Double.parseDouble(valueItemsToList.get(j)));
//Doublevalues.add(Double.valueOf(valueItemsToList.get(j)));
}
}
答案 1 :(得分:0)
List<String> valueItemsToList = Arrays.asList(buff);
//valueItemsToList.forEach(System.out::println);
List<Double> Doublevalues1 = new ArrayList<Double>();// valueItemsToList.stream().mapToDouble(Double::parseDouble).boxed().collect(Collectors.toList());
for(int j = 0; j< valueItemsToList.size();j++)
{
Doublevalues1.add(Double.parseDouble(valueItemsToList.get(j)));
//Doublevalues.add(Double.valueOf(valueItemsToList.get(j)));
}
Doublevalues1.forEach(System.out::println);
感谢您的帖子