java类读取csv文件而不是文本文件

java类读取csv文件而不是文本文件,java,csv,text-files,Java,Csv,Text Files,任务是创建一个java程序,从三个.csv文件中读取信息,并将成绩单列表(按聚合标记降序排列)输出到当前目录中名为“RankedList.txt”的文件中。该计划应显示学生是否已在大学度过了一年,以及他们取得了什么成绩。学生们学习了两个模块,IR101和IR102。该数据存储在两个.csv文件IR101.csv和IR102.csv中。他们的姓名和注册号存储在students.csv中。 评估规则规定如下: 学生必须通过这两个模块才能进入第2阶段。模块的通过标记为40 未能通过这两个模块的学生将

任务是创建一个java程序,从三个.csv文件中读取信息,并将成绩单列表(按聚合标记降序排列)输出到当前目录中名为“RankedList.txt”的文件中。该计划应显示学生是否已在大学度过了一年,以及他们取得了什么成绩。学生们学习了两个模块,IR101和IR102。该数据存储在两个.csv文件IR101.csv和IR102.csv中。他们的姓名和注册号存储在students.csv中。 评估规则规定如下:

  • 学生必须通过这两个模块才能进入第2阶段。模块的通过标记为40
  • 未能通过这两个模块的学生将被视为失败
  • 两个模块中只有一个不及格的学生将被允许重新考试
  • 两个模块都不及格的学生将被要求重修一年
  • 通过这两个模块的学生将根据他们的总分数,使用以下量表获得一个班级:

    70–100=第一 60 – 69.9 = 2.1 50 – 59.9 = 2.2 40–49.9=第三
我已经能够完成这项任务,但我面临的一个问题是,我的代码只适用于.txt文件。如果有人能告诉我如何更改代码以使用.csv文件,我将不胜感激。我目前的计划如下:

package assignment;

import java.io.*;
import java.util.*;

public class StudentsMarks {

public static void main(String[] args) throws FileNotFoundException,IOException {
    String currDir = "C:\\Users\\phili_000.Philip.001\\workspace\\ce152\\src\\ass\\StudentsMarks.java";


    Scanner sc = new Scanner(new File(currDir+"IRStudents.csv"));
    HashMap<Integer, String> students = new HashMap<Integer, String>();
    while (sc.hasNext()) {
        String line = sc.nextLine();
        students.put(sc.nextInt(), sc.next()); 
        String[] parts = line.split(",");
    }

    sc = new Scanner(new File(currDir+"IR101.csv"));
    HashMap<Integer, Double> ir1 = new HashMap<Integer, Double>();
    while (sc.hasNext()) {
        String line = sc.nextLine();
        ir1.put(sc.nextInt(), sc.nextDouble());
        String[] parts = line.split(",");

    }

    sc = new Scanner(new File(currDir+"IR102.csv"));
    HashMap<Integer, Double> ir2 = new HashMap<Integer, Double>();
    while (sc.hasNext()) {
        String line = sc.nextLine();
        ir2.put(sc.nextInt(), sc.nextDouble());
        String[] parts = line.split(",");
    }

    File output=new File(currDir+"RankedList.txt");
    BufferedWriter b=new BufferedWriter(new FileWriter(output));
    Iterator<Integer> ids = students.keySet().iterator();
    while (ids.hasNext()) {
        Integer id=ids.next();
        b.write(id+"  "+students.get(id));
        b.newLine();
        Double marks1=ir1.get(id);
        Double marks2=ir2.get(id);
        Double aggregate=(marks1+marks2)/2;
        b.write("IR101\t "+marks1+"\t IR102\t "+marks2+"\t Aggregate   "+aggregate);
        b.newLine();
        String classStd;
        if(aggregate>=70){
            classStd="1st";
        }else if(aggregate>=60){
            classStd="2.1";
        }else if(aggregate>=50){
            classStd="2.2";
        }else if(aggregate>=40){
            classStd="3rd";
        }else{
            classStd="failed";
        }

        String outcome;
        if(marks1<40 && marks2<40){
            outcome="Repeat the year";
        }else if(marks1<40){
            outcome="Resit IR101";
        }else if(marks2<40){
            outcome="Resit IR102";
        }else{
            outcome="Proceed to Stage 2";
        }
        b.write("Class:\t " + classStd + "\t Outcome: " + outcome);
        b.newLine();
        b.write("----------------------------------------------------");
        b.newLine();
    }
    b.flush();
    b.close();

}
}
包分配;
导入java.io.*;
导入java.util.*;
公开课学生成绩{
公共静态void main(字符串[]args)抛出FileNotFoundException、IOException{
String currDir=“C:\\Users\\phili\u 000.Philip.001\\workspace\\ce152\\src\\ass\\StudentsMarks.java”;
Scanner sc=新扫描仪(新文件(currDir+“IRStudents.csv”);
HashMap students=newhashmap();
while(sc.hasNext()){
字符串行=sc.nextLine();
学生。put(sc.nextInt(),sc.next());
String[]parts=line.split(“,”);
}
sc=新扫描仪(新文件(currDir+“IR101.csv”);
HashMap ir1=新的HashMap();
while(sc.hasNext()){
字符串行=sc.nextLine();
ir1.put(sc.nextInt(),sc.nextDouble());
String[]parts=line.split(“,”);
}
sc=新扫描仪(新文件(currDir+“IR102.csv”);
HashMap ir2=新的HashMap();
while(sc.hasNext()){
字符串行=sc.nextLine();
ir2.put(sc.nextInt(),sc.nextDouble());
String[]parts=line.split(“,”);
}
文件输出=新文件(currDir+“RankedList.txt”);
BufferedWriter b=新的BufferedWriter(新文件写入程序(输出));
迭代器ID=students.keySet().Iterator();
while(ids.hasNext()){
整数id=ids.next();
b、 写(id+“”+students.get(id));
b、 换行符();
双标记s1=ir1.get(id);
双标记s2=ir2.get(id);
双重聚合=(marks1+marks2)/2;
b、 写入(“IR101\t”+marks1+“\t IR102\t”+marks2+“\t聚合”+Aggregate”);
b、 换行符();
字符串类std;
如果(合计>=70){
classStd=“第一”;
}否则,如果(合计>=60){
classStd=“2.1”;
}否则,如果(合计>=50){
classStd=“2.2”;
}否则,如果(聚合>=40){
classStd=“第三”;
}否则{
classStd=“失败”;
}
字符串结果;
如果(标记1
当
读取csv时
您应逐行读取文件
,同时应
使用
拆分方法拆分行中的字符串
,然后 获取字符串的
数组

String csvFile = "path.csv";
    BufferedReader br = null;
    String line = "";
    String cvsSplitBy = ",";

    try {

        br = new BufferedReader(new FileReader(csvFile));
        while ((line = br.readLine()) != null) {

                // use comma as separator
            String[] parts = line.split(cvsSplitBy);
}

    } catch (Exception e) {
        e.printStackTrace();
    }