黑马程序员技术交流社区
标题:
存学生成绩写入文件的题目做法
[打印本页]
作者:
caobin
时间:
2015-1-7 15:51
标题:
存学生成绩写入文件的题目做法
本帖最后由 caobin 于 2015-1-7 15:55 编辑
应该看到有好几次这题,所以就拿来做一下,但是我想法好像不太一样啊,这样做行吗,会不会不符合题意啊。{:2_33:}先放结果
QQ图片20150107154145.png
(29.25 KB, 下载次数: 15)
下载附件
2015-1-7 15:47 上传
代码:
import java.io.*;
import java.util.*;
class Test
{
/*
需求:有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,
输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高到低的顺序写
入到一个名称"stu.txt"文件中。要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清
楚的看到学生的信息
思路:
1,获取键盘源
2,建立集合对象TreeSet
3,按照直观的格式写入文件
*/
public static void main(String[] args)throws IOException
{
//创建流对象
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("stu.txt")));
//创建集合对象
TreeSet<Student> ts = new TreeSet<Student>();
//读取数据
String line = null;
while((line = br.readLine())!=null)
{
//录入完毕
if("over".equals(line))
break;
else
{
ts.add(new Student(line));
}
}
System.out.println(ts);
String format = "姓名\t语文\t数学\t英语";
bw.write(format,0,format.length());
bw.newLine();
bw.flush();
for(Student s : ts)
{
//格式一下
String stu = s.toString().replaceAll(",","\t");
bw.write(stu,0,stu.length());
bw.newLine();
bw.flush();
}
br.close();
bw.close();
}
}
class Student implements Comparable<Student>
{
private String info;
public Student(String info)
{
this.info = info;
}
//返回从键盘录入的字符串
public String toString()
{
return this.info;
}
//处理录入的数据,返回学生成绩做比较
private int getScore()
{
String[] str = this.info.split(",");
int score = Integer.parseInt(str[1])+Integer.parseInt(str[2])+Integer.parseInt(str[3]);
return score;
}
//返回学生姓名
private String getName()
{
String[] str = this.info.split(",");
return str[0];
}
public int compareTo(Student s)
{
int num = s.getScore() - this.getScore();
if(num==0)
return this.getName().compareTo(s.getName());
return num;
}
}
复制代码
至于异常处理我就不写了,做这样的题目写上异常处理也不利于代码阅读
作者:
吴海松
时间:
2015-1-7 16:05
不是还有对总分从高到低排序吗
作者:
bjuth
时间:
2015-1-7 16:42
\t真能解决格式的问题么 班里有个新疆的哥们呢? 成绩就不对齐了吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2