为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 CSV 文件数据存储到 Java 中的数组中?

如何将 CSV 文件数据存储到 Java 中的数组中?

慕尼黑8549860 2022-09-07 21:01:59
以下是我正在使用的CSV文件:B00123,55B00783,35B00898,67我需要读取并存储文件中输入的第一个值,例如B00123并将其存储在数组中。用户可以添加到文件中,使其不是固定数量的记录。到目前为止,我已经尝试了这段代码:public class ArrayReader {    static String xStrPath;    static double[][] myArray;    static void setUpMyCSVArray()    {        myArray = new double [4][5];        Scanner scanIn = null;        int Rowc = 0;        int Row = 0;        int Colc = 0;        int Col = 0;        String InputLine = "";        double xnum = 0;        String xfileLocation;        xfileLocation = "src\\marks.txt";        System.out.println("\n****** Setup Array ******");        try        {            //setup a scanner            /*file reader uses xfileLocation data, BufferedRader uses               file reader data and Scanner uses BufferedReader data*/            scanIn = new Scanner(new BufferedReader(new FileReader(xfileLocation)));            while (scanIn.hasNext())            {                              //read line form file                InputLine = scanIn.nextLine();                //split the Inputline into an array at the comas                String[] InArray = InputLine.split(",");                //copy the content of the inArray to the myArray                for (int x = 0; x < myArray.length; x++)                {                    myArray[Rowc][x] = Double.parseDouble(InArray[x]);                }                //Increment the row in the Array                Rowc++;            }        }        catch(Exception e)        {        }        printMyArray();    }    static void printMyArray()    {        //print the array        for (int Rowc = 0; Rowc < 1; Rowc++)        {            for (int Colc = 0; Colc < 5; Colc++)            {                System.out.println(myArray[Rowc][Colc] + " ");            }            System.out.println();        }        return;    }    public static void main(String[] args)    {        setUpMyCSVArray();    }}这会循环遍历文件,但不会不用任何数据填充数组。结果是:****** Setup Array ******[[D@42a579930.0 0.0 0.0 0.0 0.0 
查看完整描述

3 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

实际上,当尝试将ID转换为Double时,在第一行中发生了一个NumberFormatException。所以我修改了这个程序,它对我有用。


import java.io.BufferedReader;

import java.io.FileReader;

import java.util.HashMap;

import java.util.Map;

import java.util.Scanner;


public class ArrayReader 

{

    static String xStrPath;

    static Map<String,Double> myArray = new HashMap<>();


    static void setUpMyCSVArray()

    {


        Scanner scanIn = null;

        int Rowc = 0;

        int Row = 0;

        int Colc = 0;

        int Col = 0;

        String InputLine = "";

        double xnum = 0;

        String xfileLocation;


        xfileLocation = "/Users/admin/Downloads/mark.txt";


        System.out.println("\n****** Setup Array ******");


        try

        {

            //setup a scanner

            /*file reader uses xfileLocation data, BufferedRader uses 

              file reader data and Scanner uses BufferedReader data*/

            scanIn = new Scanner(new BufferedReader(new FileReader(xfileLocation)));


            while (scanIn.hasNext())

            {              

                //read line form file

                InputLine = scanIn.nextLine();

                //split the Inputline into an array at the comas

                String[] inArray = InputLine.split(",");


                //copy the content of the inArray to the myArray

                    myArray.put(inArray[0], Double.valueOf(inArray[1]));

                //Increment the row in the Array

                Rowc++;

            }

        }

        catch(Exception e)

        {

System.out.println(e);

        }

        printMyArray();

    }


    static void printMyArray()

    {

        //print the array

        for (String key : myArray.keySet()) {

            System.out.println(key + " = " + myArray.get(key));

        }

        return;

    }


    public static void main(String[] args)

    {

        setUpMyCSVArray();


    }


输出:

//img1.sycdn.imooc.com//631896600001e1ea02680147.jpg

查看完整回答
反对 回复 2022-09-07
?
www说

TA贡献1775条经验 获得超8个赞

代码无法读取任何内容,您的文件路径不正确。给它绝对文件路径。

            scanIn = new Scanner(new BufferedReader(new FileReader(xfileLocation)));


查看完整回答
反对 回复 2022-09-07
?
BIG阳

TA贡献1859条经验 获得超6个赞

我使用opencsv库从csv中读取。


import com.opencsv.CSVReader;


public class CSV {



    private static String file = <filepath>;


    private static List<String> list = new ArrayList<>();


    public static void main(String[] args) throws Exception {

      try {

        CSVReader reader = new CSVReader(new FileReader(file));

        String[] line;

        while ((line = reader.readNext()) != null) {

          list.add(line[0]);

        }

        Object[] myArray = list.toArray();

        System.out.println(myArray.length);

        System.out.println(myArray[0]);

      } catch (Exception e) {

        e.printStackTrace();

      }

    }

}

输出打印如下


3

B00123


查看完整回答
反对 回复 2022-09-07
  • 3 回答
  • 0 关注
  • 205 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号