黑马程序员技术交流社区
标题:
一个集合和流的综合练习
[打印本页]
作者:
xiaoqiang01
时间:
2015-7-12 01:50
标题:
一个集合和流的综合练习
/**
需求:
有五个学生,每个学生有3门课的成绩,
从键盘输入以上数据(包括姓名,三门课成绩)
输入的格式:如:zhangsan,70,80,90计算出总成绩,
并把学生的信息和计算出的总成绩高低顺序存放在stud.txt文件中
*/
/*
思路:
1.编写学生类,包含姓名和三门课成绩,总成绩
2.创建流,源设备是键盘,目的是硬盘内stud.txt,纯文本,需要缓冲区
3.按键盘录入数据建立学生对象学生对象,并将学生对象录入集合
4.编写比较器,按总成绩排序,并让集合实现比较器排序
5.输出流输出
*/
import java.io.*;
import java.util.*;
class Student
{
private String name;
private int[] sc;
private int sum = 0;
//构造方法直接计算总成绩
Student(String name,int[] sc)
{
this.name = name;
this.sc = sc;
for(int i:sc)
sum += i;
}
//返回三门成绩的字符串
public String getSc()
{
StringBuilder str = new StringBuilder();
for(int i:sc)
str.append(i+",");
//去除末尾逗号
str.substring(0,str.length()-2);
return str.toString();
}
//返回姓名
public String getName()
{
return name;
}
//返回总成绩
public int getSum()
{
return sum;
}
}
//实现比较器,通过成绩排序
class Sum implements Comparator<Student>
{
public int compare(Student stu1,Student stu2)
{
int i;
i = (stu1.getSum()+"").compareTo(stu2.getSum()+"");
//成绩相同比较名字
if(i == 0)
return stu1.getName().compareTo(stu2.getName());
return i;
}
}
class StudentDemo
{
public static void main(String[] args) throws IOException
{
System.out.println("请按\"姓名,分数1,分数2,分数3\"的格式输入学生成绩:");
outIO(inIO());
System.out.println("成绩已录入");
}
//根据键盘录入创建学生对象
public static TreeSet<Student> inIO()throws IOException
{
TreeSet<Student> st = new TreeSet<Student>(new Sum());
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
//输入五次
for (int x=0;x<5 ;x++ )
{
String stu = br.readLine();
//分割录入字符串
String[] stuarr = stu.split(",");
//将成绩部分转化为int数组
int[] sc = new int[3];
for (int i = 0;i<3 ;i++ )
{
sc[i] = Integer.parseInt(stuarr[i+1]);
}
st.add(new Student(stuarr[0],sc));
}
br.close();
return st;
}
public static void outIO(Set<Student> st) throws IOException
{
//打印流,参数true表示每次运行打印命令自动刷新
PrintWriter pw = new PrintWriter(new FileOutputStream("stud.txt"),true);
//迭代学生,打印成绩
Iterator<Student> it = st.iterator();
while (it.hasNext())
{
Student stu = it.next();
pw.println(stu.getName()+" 单科成绩:"+stu.getSc()+" 总分:"+stu.getSum());
}
pw.close();
}
}
复制代码
作者:
洋葱头头
时间:
2015-7-12 09:35
不错嘿:lol
作者:
禾叶青青
时间:
2015-7-12 09:38
学习了,感谢楼主
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2