如何在java中将CSV文件转换为整数数组?

如何在java中将CSV文件转换为整数数组?,java,arrays,csv,int,genetic,Java,Arrays,Csv,Int,Genetic,我有一个包含整数的CSV文件: 我将其转换为字符串数组: try (BufferedReader br = new BufferedReader(new FileReader("x.csv"))) { String line; while ((line = br.readLine()) != null) { String[] values = line.split("\n"); x_values.add(Array

我有一个包含整数的CSV文件:

我将其转换为字符串数组:

try (BufferedReader br = new BufferedReader(new FileReader("x.csv"))) {
        String line;
        while ((line = br.readLine()) != null) {
            String[] values = line.split("\n");
            x_values.add(Arrays.asList(values));
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
输出如下:


但我想用数值作为整数,求它们的平均值。我该怎么做呢?

您正在将行解析为
字符串
值,而不是
整数
。从您的图像判断,您的整数采用指数表示法,这意味着您必须首先将它们解析为double,然后将它们转换为整数:

    List<Integer> x_values = new ArrayList<>();

    try (BufferedReader br = new BufferedReader(new FileReader("x.csv"))) {
        String line;
        while ((line = br.readLine()) != null) {
            String[] values = line.split("\n");
            List<Integer> intValues = Arrays.asList(values).stream()
                    .map(Double::parseDouble) // parse x.xxE+02 to xxx.0
                    .map(Double::intValue) // xxx.0 to integer xxx
                    .collect(Collectors.toList()); // back to List
            x_values.addAll(intValues);
        }

    } catch (IOException e) {
        e.printStackTrace();
    }
List x_values=new ArrayList();
try(BufferedReader br=new BufferedReader(new FileReader(“x.csv”)){
弦线;
而((line=br.readLine())!=null){
字符串[]值=行分割(“\n”);
List intValues=Arrays.asList(values).stream()
.map(Double::parseDouble)//将x.xxE+02解析为xxx.0
.map(Double::intValue)//xxx.0到整数xxx
.collect(Collectors.toList());//返回列表
x_值.addAll(intValues);
}
}捕获(IOE异常){
e、 printStackTrace();
}

您应该确保您的csv文件只包含整数,否则请使用
列出x_值
并跳过整数转换。

这是整数的真实格式还是它们在电子表格中的显示方式?请将(正确的)示例值作为文本发布到您的问题中。首先修复您的代码。使用调试器。在代码中使用println来理解您在做什么。在“\n”上拆分一行没有多大意义。一旦你真的有了一个字符串数组,就把每个字符串解析成一个整数。你可以对单个字符串使用
integer.parseInt(text)
,然后将它们收集到
int[]
中。但总的来说,这似乎是一个糟糕的方法。去OOP,创建一个专用类,以逻辑方式表示每行的数据。给它一个从给定行创建它的
parseLine
方法。然后只需阅读doing
listfoos=Files.lines(路径,get(“file.csv”)).map(Foo::parseLine).collect(Collectors.toList())-现代Java,万岁。