Java 读取csv文件并存储在阵列中
我得到的练习题说我需要 创建一个java代码,在csv文件中读取名称和高度 要读取文件,必须从用户处获取文件名作为字符串 然后,必须将文件内容存储到两个数组中,一个是名称(字符串)和高度(实数) 你应该至少读两次文件,一次检查文件中有多少学生(这样你就知道你需要存储多少学生),还有几次实际阅读文件(获取姓名和高度) 然后提示用户输入所需高度的名称。它应该输出userinput的高度 示例csv文件是 克里斯,180岁 杰斯,161岁 詹姆斯,174岁 它不多,但这是我能想到的全部,我不知道如何分别存储名称和高度,并使用该数组输出结果。我需要在代码中的某个地方使用split吗?我记得学过它,但不知道它是否在这种情况下使用Java 读取csv文件并存储在阵列中,java,file-io,Java,File Io,我得到的练习题说我需要 创建一个java代码,在csv文件中读取名称和高度 要读取文件,必须从用户处获取文件名作为字符串 然后,必须将文件内容存储到两个数组中,一个是名称(字符串)和高度(实数) 你应该至少读两次文件,一次检查文件中有多少学生(这样你就知道你需要存储多少学生),还有几次实际阅读文件(获取姓名和高度) 然后提示用户输入所需高度的名称。它应该输出userinput的高度 示例csv文件是 克里斯,180岁 杰斯,161岁 詹姆斯,174岁 它不多,但这是我能想到的全部,我不知道如何分
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!=扫描仪
。请纠正所有这些问题并提出具体问题。