----------------------
ASP.Net+Unity开发、
.Net培训、期待与您交流! ----------------------
需求:从键盘输入学生成绩信息,并将信息按照总分高低存入文件中
1、首先建立一个描述学生对象的类 Student,这个学生信息存储方式,按照需要覆写toString()、comperTo()、hashCode()、equals()等基本方法,另外一个学生类一般具备set()、get()方法,用来设置和获取学生信息,这个主要是集合章节的使用
2、键盘录入信息,键盘读取流;将信息先存到一个集合中以实现排序
3、录入完毕后,遍历集合并将集合中的数据使用输出流存入文件中
4、关闭资源,完成整个需求
代码实现如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
class
Student
implements
Comparable<Student>{
private
String name;
private
float
chinese;
private
float
math;
private
float
english;
public
Student(String name,
float
chinese,
float
math,
float
english){
this
.name = name;
this
.chinese = chinese;
this
.math = math;
this
.english = english;
}
public
int
compareTo(Student s){
float
t = s.getTotal();
int
num =
new
Float(
this
.getTotal()).compareTo(
new
Float(t));
//this.name.compareTo(s.name);
return
num;
//比较器的反转?
}
public
String toString(){
return
"name:"
+name+
" chinese:"
+chinese+
" math:"
+math+
" english:"
+english+
" -->Total"
+
this
.getTotal();
}
public
void
setName(String name){
this
.name = name ;
}
public
void
setChinese(
float
chinese){
this
.chinese = chinese;
}
public
void
setMath(
float
math){
this
.math = math;
}
public
void
setEnglish(
float
english){
this
.english = english;
}
public
float
getTotal(){
return
chinese + math + english;
}
public
int
hashCode(){
return
name.hashCode() + (
int
)getTotal()*
39
;
}
public
boolean
equals(Object obj){
if
(obj
instanceof
Student)
throw
new
ClassCastException(
"类型不匹配!"
);
Student s = (Student)obj;
return
this
.name.equals(s.name) &&
this
.getTotal() == s.getTotal();
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
import
java.io.BufferedReader;
import
java.io.BufferedWriter;
import
java.io.FileNotFoundException;
import
java.io.FileOutputStream;
import
java.io.IOException;
import
java.io.InputStreamReader;
import
java.io.OutputStreamWriter;
import
java.util.Iterator;
import
java.util.TreeSet;
public
class
Storage {
public
static
void
main(String args[]){
stor();
}
public
static
void
stor(){
TreeSet<Student> ts =
new
TreeSet<Student>();
BufferedReader bufr=
new
BufferedReader(
new
InputStreamReader(System.in));
try
{
String line =
null
;
while
((line = bufr.readLine()) !=
null
){
String[] ss = line.split(
" "
);
if
(judge(line))
//判断合法
{
ts.add(
new
Student(ss[
0
], Float.parseFloat(ss[
1
]), Float.parseFloat(ss[
2
]),
new
Float(ss[
3
])));
}
else
{
if
(
"over"
.equals(line))
break
;
else
sop(
"输入数据非法,请重新输入"
);
}
}
}
catch
(IOException e) {
sop(
"读取信息失败"
);
e.printStackTrace();
}
finally
{
try
{
bufr.close();
}
catch
(IOException e) {
new
RuntimeException(
"读取信息关闭失败!"
);
e.printStackTrace();
}
}
//将信息存入文件中
printts(ts);
}
public
static
void
printts(TreeSet<Student> ts){
BufferedWriter bufw =
null
;
try
{
bufw =
new
BufferedWriter(
new
OutputStreamWriter(
new
FileOutputStream(
"stud.txt"
)));
Iterator<Student> it = ts.iterator();
while
(it.hasNext()){
Student s = it.next();
String s0 = s.toString();
try
{
bufw.write(s0);
bufw.newLine();
bufw.flush();
}
catch
(IOException e) {
sop(
"信息写入失败!!"
);
e.printStackTrace();
}
}
try
{
bufw.close();
}
catch
(IOException e) {
sop(
"关闭写入流失败!"
);
e.printStackTrace();
}
}
catch
(FileNotFoundException e1) {
sop(
"信息写入失败!"
);
e1.printStackTrace();
}
}
public
static
boolean
judge(String s){
String[] ss = s.split(
" "
);
if
(ss.length ==
4
)
return
true
;
else
return
false
;
}
public
static
void
sop(Object obj){
System.out.println(obj);
}
}
|
---------------------- ASP.Net+Unity开发、 .Net培训、期待与您交流! ----------------------