黑马程序员技术交流社区
标题:
这道题,难住了我,难住了你了吗
[打印本页]
作者:
廉伟
时间:
2012-10-2 12:04
标题:
这道题,难住了我,难住了你了吗
本帖最后由 廉伟 于 2012-10-2 20:17 编辑
有五个学生,每个学生有3门课的成绩,定义一种比较直观的文本文件格式,
输入学生姓名和成绩,从键盘输入以上数据(包括姓名,三门课成绩),
按总分数从高到低的顺序将学生信息存放在磁盘文件"stu.txt"中。
作者:
覃宏海
时间:
2012-10-2 12:12
思路:
排序集合:Set
键盘录入:InputStream(System.in)
存在硬盘:properties
作者:
张丽
时间:
2012-10-2 13:14
package com.itheima;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Comparator;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class Test11 {
/**
* 有五个学生,每个学生有3门课的成绩,定义一种比较直观的文本文件格式,
输入学生姓名和成绩,从键盘输入以上数据(包括姓名,三门课成绩),
按总分数从高到低的顺序将学生信息存放在磁盘文件"stu.txt"中。
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new FileWriter("d:\\stu.txt"));
System.out.println("请输入数据");
Set<Student> set=new TreeSet<Student>(new TreeSet());
String len=null;
while((len=br.readLine())!=null)
{
bw.write(len);
bw.newLine();
bw.flush();
Iterator<Student> it=set.iterator();
while(it.hasNext())
{
Student s=it.next();
bw.write(s.getScore());
}
if("over".equals(len))
break;
}
br.close();
bw.close();
}
}
class Student implements Comparator<Student>{
private String name;
private int score;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public int compare(Student s1,Student s2) {
// TODO Auto-generated method stub
return s1.getScore()-s2.getScore();
}
Student(String name,int score){
this.name=name;
this.score=score;
}
}
目前就写了这么多,结果是在硬盘里写入了从键盘读取的数据,可是没排序成功,有点纠结,哪位会的可以帮忙修改下。
作者:
黄小贝
时间:
2012-10-2 14:36
张丽 发表于 2012-10-2 13:14
package com.itheima;
import java.io.BufferedReader;
看了下你的,你为啥不先排好序再往文件里面写入?
作者:
郭阳
时间:
2012-10-2 18:26
本帖最后由 郭阳 于 2012-10-2 19:37 编辑
import java.util.*;
import java.io.*;
class Student
{
private String name;
private int score1;
private int score2;
private int score3;
Student(String name,int score1,int score2,int score3)
{
this.name=name;
this.score1=score1;//这里可以加入if判断输入的分数是否为合法分数
this.score2=score2;
this.score3=score3;
}
String getName(){return name;}//这里为了减少空间方便阅读就这样写了
int getScore1(){return score1;}
int getScore2(){return score1;}
int getScore3(){return score3;}
}
class StudentComparator implements Comparator<Student>//学生的比较器来比较总分
{
public int compare(Student s1,Student s2)
{
int num=(s2.getScore1()+s2.getScore2()+s2.getScore3())-(s1.getScore1()+s1.getScore2()+s1.getScore3());
if (num==0)//保证不会将总分相同的学生当做重复元素
return 1;
return (num);
}
}
class Demo
{
public static void main (String []args) throws Exception//为了代码简单就把异常抛了
{
System.out.println
("\n请输入学生信息,用逗号隔开,如:\"张三,98,97,100\",全部输入结束后请输入done完成输入\n");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String len=null;
TreeSet<Student>ts=new TreeSet<Student>(new StudentComparator());
while((len=br.readLine())!=null)
{
if (len.equals("done"))//输入多个学生,结束后用done结束
break;
String[] arr=len.split(",");//将录入的学生信息切割成字符串数组
ts.add(new Student(arr[0],Integer.parseInt(arr[1]),Integer.parseInt(arr[2]),Integer.parseInt(arr[3])));//将信息以学生对象传进集合并在内存中根据比较器排序
}
br.close();//下面开始往文件上写了
BufferedWriter bw=new BufferedWriter(new FileWriter("Stu.txt"));
for(Student s:ts)
{
bw.write(s.getName()+"\t"+String.valueOf(s.getScore1())+"\t"+String.valueOf(s.getScore2())+"\t"+String.valueOf(s.getScore3()));
bw.newLine();
}
bw.close();
}
}
复制代码
你编译运行一下我的代码,看是不是你要的效果。
作者:
冯超
时间:
2012-10-2 18:53
这个 必须顶
作者:
冯超
时间:
2012-10-2 20:43
凑合着看
package rw;
import java.io.*;
/*有五个学生,每个学生有3门课的成绩,定义一种比较直观的文本文件格式,
输入学生姓名和成绩,从键盘输入以上数据(包括姓名,三门课成绩),
按总分数从高到低的顺序将学生信息存放在磁盘文件"stu.txt"中。*/
public class Stundent {
private Integer Math; //数学成绩
private Integer Java; //java课程成绩
private Integer English; //英语成绩
private int i;
StringBuffer sb = new StringBuffer();;
public StringBuffer getCourst(int Math, int Java, int English, int i)
{
this.Math = Math;
this.Java = Java;
this.English = English;
this.i = i;
//将整形转化成一个字符串
sb.append(Integer.toString(Math) + " ").append(Integer.toString(Java) + " ").append(Integer.toString(English)).append("\r\n");
System.out.println(sb);
return sb;
}
public void Writer()
{
String str1;
String str;
str1 = "Math Java English"; //科目
try {
FileWriter fw = new FileWriter("D:\\stu.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.write(str1);
bw.newLine();
bw.write(sb.toString());
bw.flush();
// System.out.println(i);
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package rw;
public class test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Stundent s = new Stundent();
s.getCourst(100, 99, 80, 1);
s.getCourst(100, 90, 88, 2);
s.getCourst(100, 10, 88, 3);
s.getCourst(100, 10, 70, 4);
s.getCourst(130, 10, 88, 5);
s.Writer();
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2