Java 读取csv文件并存储在阵列中

Java 读取csv文件并存储在阵列中,java,file-io,Java,File Io,我得到的练习题说我需要 创建一个java代码,在csv文件中读取名称和高度 要读取文件,必须从用户处获取文件名作为字符串 然后,必须将文件内容存储到两个数组中,一个是名称(字符串)和高度(实数) 你应该至少读两次文件,一次检查文件中有多少学生(这样你就知道你需要存储多少学生),还有几次实际阅读文件(获取姓名和高度) 然后提示用户输入所需高度的名称。它应该输出userinput的高度 示例csv文件是 克里斯,180岁 杰斯,161岁 詹姆斯,174岁 它不多,但这是我能想到的全部,我不知道如何分

我得到的练习题说我需要

创建一个java代码,在csv文件中读取名称和高度

要读取文件,必须从用户处获取文件名作为字符串

然后,必须将文件内容存储到两个数组中,一个是名称(字符串)和高度(实数)

你应该至少读两次文件,一次检查文件中有多少学生(这样你就知道你需要存储多少学生),还有几次实际阅读文件(获取姓名和高度)

然后提示用户输入所需高度的名称。它应该输出userinput的高度

示例csv文件是

克里斯,180岁

杰斯,161岁

詹姆斯,174岁

它不多,但这是我能想到的全部,我不知道如何分别存储名称和高度,并使用该数组输出结果。我需要在代码中的某个地方使用split吗?我记得学过它,但不知道它是否在这种情况下使用

import.java.util.*;
private class StudentNameHeight
private void main (string [] args)
{ 
    String filename;
    Scanner sc = new scanner(system.in);
    System.out.println("enter file name")
    filename = sc.nextline();
    readFile (filename);
}

private void readFile (String filename)
{
    FileInputStream fileStrm = null;
    InputStreamReader rdr;
    BufferedReader bufRdr;

    try 
   {
        fileStrm = new FileInputStream(filename);
        rdr = new InputStreamReader(fileStrm);
        bufRdr = new BufferedReader(rdr);

        // ?


    catch (IOException e)
    {
        if (fileStrm != null)
        {
           try {fileStrm.close(); } catch (IOException e2){}
        }
        System.out.println("error in processing" + e.getMessage());
    }
}
我是java新手,所以,任何小提示或帮助都会很好


谢谢

您的代码看起来很乱。据我从您的问题中了解,您愿意阅读包含两个实体的CSV文件,一个是名称,另一个是高度,并将这两个实体存储在两个不同的数据结构中。我在下面的代码片段中教您一种实现这一点的简单方法

public void processCSVFile(String filePath){
        try(BufferedReader fileReader = new BufferedReader(new FileReader(new File(filePath)))){
            //Create two lists to hold name and height.
            List<String> nameList = new ArrayList<>();
            List<Integer> heightList = new ArrayList<>();

            String eachLine = "";
            /*
             * Read until you hit end of file.
             */
            while((eachLine = fileReader.readLine()) != null){
                /*
                 * As it is CSV file, split each line at ","
                 */
                String[] nameAndHeightPair = eachLine.split(",");

                /*
                 * Add each item into respective lists.
                 */
                nameList.add(nameAndHeightPair[0]);
                heightList.add(Integer.parseInt(nameAndHeightPair[1]));
            }

            /*
             * If you are very specific, you can convert these
             * ArrayList to arrays here.
             */
        }catch(IOException e1){
            e1.printStackTrace();
        }
    }
public void processCSVFile(字符串文件路径){
try(BufferedReader fileReader=new BufferedReader(new fileReader(new File(filePath)))){
//创建两个列表以保存名称和高度。
列表名称列表=新的ArrayList();
列表高度列表=新的ArrayList();
字符串eachLine=“”;
/*
*读到文件的末尾。
*/
而((eachLine=fileReader.readLine())!=null){
/*
*因为它是CSV文件,所以在“,”处拆分每一行
*/
字符串[]name和heightpair=eachLine.split(“,”);
/*
*将每个项目添加到各自的列表中。
*/
名称列表。添加(名称和高度对[0]);
heightList.add(Integer.parseInt(name和heightpair[1]);
}
/*
*如果你是非常具体的,你可以转换这些
*ArrayList指向此处的数组。
*/
}捕获(IOE1异常){
e1.printStackTrace();
}
}

首先,您的代码不会编译,因为您不能将顶级类设置为
private
。Java对例如:
scanner!=扫描仪
。请纠正所有这些问题并提出具体问题。