黑马程序员技术交流社区
标题:
IO流学习总结小练习
[打印本页]
作者:
奋发吧小白
时间:
2014-8-29 08:52
标题:
IO流学习总结小练习
本帖最后由 奋发吧小白 于 2014-8-29 08:53 编辑
<div class="blockcode"><blockquote>/*
有五个学生,每个学生有3门科=课的成绩,
从键盘输入以上数据(包括姓名,三门课成绩),
输入的格式:如:张三,30,40,60计算出总成绩
并把学生的信息和计算出的总成绩高低顺序放在磁盘文件“stu.txt”中。
分析:
1,描述学生对象
2,定义一个可以操作学生对象的工具类
思想:
1,通过获取键盘录入的一行数据,并将改行数据取出封装成学生对象。
2,因为学生对象有很多,n那么就需要使用集合,因为学生总分需要排序,所以需要使用TreeSet
3,将集合中的信息写入到文件中
*/
import java.io.*;
import java.util.*;
class Student implements Comparable<Student>
{
private String name;
private int ma,cn,en;//代表三门成绩
private int sum;
Student(String name,int ma,int cn,int en)
{
this.name =name;
this.ma =ma;
this.cn =cn;
this.en = en;
sum =ma+cn+en;
}
public int compareTo(Student s)
{
int num = new Integer(this.sum).compareTo(new Integer (s.sum));
if(num==0)
return this.name.compareTo(s.name);
return num;
}
public String getName()
{
return name;
}
public int getSum()
{
return sum;
}
public int hashCode()
{
return name.hashCode()+sum*78 ;
}
public boolean equals(Object obj)
{
if(!(obj instanceof Student))
throw new ClassCastException("类型不匹配");
Student s = (Student)obj;
return this.name.equals(s.name)&& this.sum ==s.sum;
}
public String toString()
{
return "student["+name+","+ma+","+cn+","+en+"]";
}
}
class StudentInfoTool
{
public static Set<Student>getStudents() throws Exception
{
BufferedReader bufr =
new BufferedReader(new InputStreamReader(System.in));
Set<Student>stus = new TreeSet<Student>();
String line = null;
while ((line = bufr.readLine())!=null)
{
if ("over".equals(line))
break;
String [] info = line.split(",");
Student stu = new Student(info[0],
Integer.parseInt(info[1]),
Integer.parseInt(info[2]),
Integer.parseInt(info[3]));
stus.add(stu);
}
bufr.close();
return stus;
}
public static void write2File(Set<Student> stus) throws Exception
{
BufferedWriter bufw =
new BufferedWriter(new FileWriter("stu.txt"));
for(Student stu:stus)
{
bufw.write(stu.toString());
bufw.write(stu.getSum()+"");
bufw.newLine();
bufw.flush();
}
bufw.close();
}
}
class StudentInfoTest
{
public static void main(String[] args) throws Exception
{
Set<Student> stus = StudentInfoTool.getStudents();
StudentInfoTool.write2File(stus);
}
}
复制代码
作者:
范靖明
时间:
2014-8-29 09:07
牛人啊!俺还是看懂了大部分,Io还没学呢!
作者:
yaodd321
时间:
2014-8-29 09:34
马克一下,马上就要看IO流了。
作者:
张周飞
时间:
2014-8-29 09:39
LZ 大爱 我看了一下 受益匪浅
作者:
文盲庄稼汉
时间:
2014-8-29 09:58
嗯.不错 代码很规范
作者:
许愿じ☆VE杰
时间:
2014-8-29 10:16
还没看到这里,先收藏
作者:
波风梅西
时间:
2014-8-29 12:40
没用比较器吧 成绩应该是从低到高排的
作者:
戏言丶
时间:
2014-8-29 13:22
来看看学习学习,还没看到IO部分呢
作者:
永恒星空
时间:
2014-8-29 15:09
来看看...
作者:
WJN_YES
时间:
2014-8-30 10:53
io还没学习到呢!
作者:
梦里听传说
时间:
2014-8-30 11:16
顶一个
作者:
ximi
时间:
2014-8-30 13:09
不错,加油额
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2