1 、键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件。
代码:
public class TreeSetDemo {
public static void main(String[] args) throws IOException{
//创建TreeSet对象,用接口匿名内部类的方式实现Comparator接口
TreeSet<Student> ts=new TreeSet<Student>(new Comparator<Student>() {
//重写Comparator接口中的compare()方法
@Override
public int compare(Student s1,Student s2) {
//主要排序条件:总成绩,按从高到低输出
int num1=s2.sum(s2)-s1.sum(s1);
//次要排序条件,当总成绩相同时按学生姓名内容比较
int num2=(num1==0)?s2.getName().length()-s1.getName().length():num1;
return num2;
}
});
//键盘录入学生信息
System.out.println("请输入学生信息:");
for(int x=1;x<6;x++) {
Scanner sc=new Scanner(System.in);
System.out.print("请输入第"+x+"名学生的姓名:");
String name=sc.nextLine();
System.out.print("请输入第"+x+"名学生的语文成绩:");
int chineseScore=sc.nextInt();
System.out.print("请输入第"+x+"名学生的数学成绩:");
int mathScore=sc.nextInt();
System.out.print("请输入第"+x+"名学生的英语成绩:");
int englishScore=sc.nextInt();
//将录入的学生信息封装到学生对象里
Student s=new Student();
s.setName(name);
s.setChineseScore(chineseScore);
s.setMathScore(mathScore);
s.setEnglishScore(englishScore);
//把学生对象添加到集合中
ts.add(s);
}
//创建字符缓冲输出流对象
BufferedWriter bw=new BufferedWriter(new FileWriter("18-1.txt"));
//遍历
for(Student s:ts) {
//利用StringBuffer中的追加功能,将需要输出的信息集合在一起
StringBuffer sb=new StringBuffer();
sb.append(s.getName()).append(",").append(s.getChineseScore()).append(",").append(s.getMathScore())
.append(",").append(s.getEnglishScore()).append(",").append(s.sum(s));
//将信息写入文本文件中
bw.write(sb.toString());
//换行
bw.newLine();
//刷新流
bw.flush();
}
//关闭流,释放资源
bw.close();
}
}
控制台截图:
文本文件截图:
2、已知s.txt文件中有这样的一个字符串:“hcexfgijkamdnoqrzstuvwybpl”
请编写程序读取数据内容,把数据排序后写入ss.txt中。
public class Paixv {
public void main(String[] args) throws FileNotFoundException,IOException{
//封装字符缓冲输入流对象,读取文本文件中内容
BufferedReader br=new BufferedReader
(new FileReader("E:\\西部开源\\作业\\课后练习\\java\\18-2.txt"));
//创建TreeSet集合对象,并进行选择排序
TreeSet<Character> ts=new TreeSet<Character>(new Comparator<Character>() {
@Override
public int compare(Character o1, Character o2) {
int num=o1-o2;
return num;
}
});
//创建字符缓冲输出流对象,并将集合ts中的内容添加到文本文件18-2W中
BufferedWriter bw=new BufferedWriter
(new FileWriter("E:\\西部开源\\作业\\课后练习\\java\\18-2W.txt"));
//一次读取一个字符
int ch=0;
while((ch=br.read())!=-1) {
//将读取到的内容添加到集合ts中
ts.add((char)ch);
}
//遍历集合ts中的元素并写入文本文件18-2W中
for(Character c:ts) {
bw.write(c);//写数据
bw.flush();//刷新流
}
//关闭流,释放资源
br.close();
bw.close();
}
}