P2-6 案例:统计学生成绩

案例:统计学生成绩


需求说明

1.有如下格式的一个文本文件:
张三,90,100,80.2
罗翔,99,99,30.5
杨中科,100,100,100
每一行代表一个学生的姓名,成绩(语数外)。
输出每个人的成绩到一个单独的文本文件,比如“张三.txt”的内容为“张三你好,你的语文成绩为90,你的数学成绩为100,你的外语成绩为80,平均分为90.06”。不考虑小数精度问题。演示:如果自己搜索把String转换为double的方法。

练习

1、有如下格式的一个文本文件:
张三 ,90,100,80,90
罗 翔,99,99,30
杨 中科,100,100,100,100
每一行代表一个学生的姓名,成绩。每个学生参加的考试科目数量不确定。输入姓名的时候,有的姓名两边或者中间误输入了空格。输出所有人的成绩到一个文本文件“平均成绩.txt” ,内容格式如下:
张三, 90
李四, 76
杨中科,100

  • 思路
  • 1.先逐行去获取一行的内容
  • 2.姓名的两边或中间有空格,可以用trim去空格
  • 3.考试科目数量不确定,可以用每一行的数组长度,
  • 4.把这些信息都输入到同一个文本文件中。名称为“平均成绩.txt”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
String[] lines = IOHelpers.readAllLines("D:/新建文件夹/练习.txt");
for (String line :lines)
{
String[] strs =line.split(",");
String name = strs[0].replace(" ","");//去掉名字中的空格
System.out.println(name);
int sum =strs.length;//获取字符串组的长度
double sum1 =0;
for (int i =1;i<=sum-1;i++)
{
// System.out.println(strs[i]);
double 成绩 = Double.parseDouble(strs[i]);//String转换成double
sum1 =成绩+sum1;
}
double pingjun = sum1/(sum-1);//获得平均分
System.out.println(pingjun);
String msg = name+","+pingjun;

//FileWriter方法 不会覆盖
try {
FileWriter fileWriter = new FileWriter("D:/新建文件夹/平均成绩.txt", true); // 第二个参数为true表示追加内容
fileWriter.write(msg+"\n");//换行
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}

P2-6 案例:统计学生成绩
http://example.com/2024/08/05/SE101-零基础玩Java/Part2-笔记/P2-6 案例:统计学生成绩/
Author
John Doe
Posted on
August 5, 2024
Licensed under