java类读取csv文件而不是文本文件
任务是创建一个java程序,从三个.csv文件中读取信息,并将成绩单列表(按聚合标记降序排列)输出到当前目录中名为“RankedList.txt”的文件中。该计划应显示学生是否已在大学度过了一年,以及他们取得了什么成绩。学生们学习了两个模块,IR101和IR102。该数据存储在两个.csv文件IR101.csv和IR102.csv中。他们的姓名和注册号存储在students.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 未能通过这两个模块的学生将
- 学生必须通过这两个模块才能进入第2阶段。模块的通过标记为40
- 未能通过这两个模块的学生将被视为失败
- 两个模块中只有一个不及格的学生将被允许重新考试
- 两个模块都不及格的学生将被要求重修一年
- 通过这两个模块的学生将根据他们的总分数,使用以下量表获得一个班级: 70–100=第一 60 – 69.9 = 2.1 50 – 59.9 = 2.2 40–49.9=第三
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();
}