如何按指定格式打印CSV文件中的课程与对应成绩数据
Java读取CSV按指定格式输出解决方案
现有代码问题梳理
- 语法层面:
- 类定义语法错误,类名后不能加括号
class是Java保留关键字,不能用作变量名- 未处理IO异常、未导入相关依赖包
- 逻辑层面:
- 错误将所有科目、所有成绩分别拼接为整串,没有按「科目-成绩」成对处理
- 没有逐行输出每组对应关系,也没有处理科目首字母大写的需求
- 行末多余的逗号会导致split后出现空字符串,需要跳过空值
修正后可运行代码
import java.io.FileReader; import java.util.Scanner; // 类名遵循大驼峰规范,类定义后不加括号 public class ReadCsv { public static void main(String[] args) throws Exception { String path = "file.csv"; Scanner in = new Scanner(new FileReader(path)); while (in.hasNextLine()) { String line = in.nextLine(); String[] tokens = line.split(","); // 步长为2遍历,每两个元素为一组:下标偶数是科目,奇数是对应成绩 for (int i = 0; i < tokens.length - 1; i += 2) { String subject = tokens[i].trim(); String grade = tokens[i+1].trim(); // 跳过空值(处理行末多余逗号导致的空元素) if (subject.isEmpty() || grade.isEmpty()) { continue; } // 科目首字母大写,其余保持原样 String formattedSubject = subject.substring(0, 1).toUpperCase() + subject.substring(1); // 按要求格式输出 System.out.println(formattedSubject + " - " + grade); } } in.close(); } }
输出效果
运行后会完全匹配要求的格式:
History - A Math - B Chemistry - A Geo - C Art - B Literature - A History - C Physics - A
内容的提问来源于stack exchange,提问作者Pandawithwings __
相关产品推荐
相关产品推荐

