5.19作业
1 :键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件
package FileScore;
/**
* 1 :键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件
*/
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Comparator;
import java.util.TreeSet;
public class FileScoreDemo {
public static void main(String[] args) {
// 创建学生类对象
Student s = new Student();
// 定义TreeSet匿名内部类,重写排序条件
TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
// 主要条件为成绩,由高到低
int sum = o2.getSum() - o1.getSum();
// 次要条件为学生姓名,成绩一致,按姓名排序
int sum2 = sum == 0 ? o1.getName().compareTo(o2.getName()) : sum;
return sum2;
}
});
// 遍历获取信息,添加到Set集合中
for (int i = 0; i < 5; i++) {
Student s1 = s.getDate();
ts.add(s1);
}
// try...catch抛出异常
try {
// 创建字符缓冲流类对象
BufferedWriter bw = new BufferedWriter(new FileWriter("score.txt"));
// 遍历集合,给文件对象写入数据
for (Student stu : ts) {
// 写入数据
bw.write("姓名:" + stu.getName() + "语文成绩:" + stu.getChscore() + "数学成绩:" + stu.getMtscore() + "英语成绩:"
+ stu.getEngscore() + "总分:" + stu.getSum());
bw.newLine();
}
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package FileScore;
import java.util.Scanner;
// 学生类
public class Student {
private String name;
private int sum;
private int chscore;
private int mtscore;
private int engscore;
public Student() {
super();
}
public Student(String name, int sum, int chscore, int mtscore, int engscore) {
super();
this.name = name;
this.sum = sum;
this.chscore = chscore;
this.mtscore = mtscore;
this.engscore = engscore;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSum() {
return sum;
}
public void setSum(int sum) {
this.sum = sum;
}
public int getChscore() {
return chscore;
}
public void setChscore(int chscore) {
this.chscore = chscore;
}
public int getMtscore() {
return mtscore;
}
public void setMtscore(int mtscore) {
this.mtscore = mtscore;
}
public int getEngscore() {
return engscore;
}
public void setEngscore(int engscore) {
this.engscore = engscore;
}
// 获取学生数据的方法
public Student getDate() {
// 创建键盘录入对象,获取学生数据
Scanner sc = new Scanner(System.in);
System.out.println("请依次输入学生姓名、语文成绩、数学成绩、英语成绩:");
System.out.println("请输入姓名:");
String n = sc.nextLine();
System.out.println("请输入语文成绩:");
int ch = sc.nextInt();
System.out.println("请输入数学成绩:");
int mt = sc.nextInt();
System.out.println("请输入英语成绩:");
int eng = sc.nextInt();
int sum = ch + mt + eng;
Student stu = new Student(n, sum, ch, mt, eng);
return stu;
}
}
2: 已知s.txt文件中有这样的一个字符串:“hcexfgijkamdnoqrzstuvwybpl”
请编写程序读取数据内容,把数据排序后写入ss.txt中。
package ReadFile;
/**
* 已知s.txt文件中有这样的一个字符串:“hcexfgijkamdnoqrzstuvwybpl”
* 请编写程序读取数据内容,把数据排序后写入ss.txt中。
*/
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
public class ReadFile {
public static void main(String[] args) {
// 创建ArrayList集合对象接收文件数据
ArrayList<String> arr = new ArrayList<String>();
// try...catch抛出异常
try {
// 创建字符缓冲输入流类对象
BufferedReader br = new BufferedReader(new FileReader("num2test.txt"));
// 获取文件内容,传递给字符串s
String s = br.readLine();
// 将字符串转字符数组并排序
char[] ch = s.toCharArray();
Arrays.sort(ch);
// 用匿名对象将数组转为字符串,顺便转个大写
arr.add(new String(ch).toUpperCase());
// 关闭流对象
br.close();
} catch (IOException e) {
e.printStackTrace();
}
// 遍历集合检测是否成功排序添加
for (int i = 0; i < arr.size(); i++) {
System.out.println(arr.get(i));
}
// try...catch抛出异常
try {
// 创建字符缓冲输出流对象
BufferedWriter bw = new BufferedWriter(new FileWriter("ss.txt"));
// 遍历写入数据
for (String s : arr) {
bw.write(s);
}
// 关闭流对象
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}