按班级对学员总成绩按降序排序,结果通过IO流输出到result_1.txt文件中。
如:
班级[classIName classID]
学员姓名学员ID[总分:457,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
学员姓名学员ID[总分:453,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
学员姓名学员ID[总分:448,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
班级[classIName classID]
学员姓名学员ID[总分:457,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
学员姓名学员ID[总分:454,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
学员姓名学员ID[总分:445,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
说明:
classIName classID用空格隔开,className为班级名称,classID为班级编号。
学员姓名学员ID用空格隔开,每位学员成绩独占一行。总分为学员各学科成绩之和
如:
班级[classIName classID]
学员姓名学员ID[总分:457,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
学员姓名学员ID[总分:453,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
学员姓名学员ID[总分:448,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
班级[classIName classID]
学员姓名学员ID[总分:457,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
学员姓名学员ID[总分:454,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
学员姓名学员ID[总分:445,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
说明:
classIName classID用空格隔开,className为班级名称,classID为班级编号。
学员姓名学员ID用空格隔开,每位学员成绩独占一行。总分为学员各学科成绩之和
学员姓名学员ID[总分:457,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
学员姓名学员ID[总分:453,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
学员姓名学员ID[总分:448,学科ID:87,学科ID:83,学科ID:82,学科ID:83]是在另一个文件中的,怎么实现排序那?多少没有思路,能不能给点思路?谢谢
Student{
String name;
String id;
double total;
List<SingleScore> scores;//各科成绩 toString(){
//按照你要输出的写一个toString方法。
}
}
根据班级来放置这些students,
写个比较器来针对集合的total进行排序。然后写入到文件中就可以了
对象排序查看Comparator接口
Student,Comparable
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;public class ReadStuData {
/** * @param args */
public static void main(String[] args) throws Exception {
List<Student> myList = readXML();
List<Student> stu = array(myList);
write(stu);
}
public static List<Student> readXML()
{
File file = new File("D:\\1\\result_1.txt");
List<Student> stuList = new ArrayList<Student>();//学生集合
try {
SAXBuilder sb = new SAXBuilder();
String name = "bin.com.isoftstone.readxml.Student";
// bin是eclipse中java编译后的class目录
String newName = name.replaceAll("[.]", "/");
System.out.println(newName + ".xml");
Document doc = null;
doc = sb.build(new File(newName + ".xml"));
Element root = doc.getRootElement();
// HD
if (root == null) {
System.out.println("root is null");
return null;
} else {
//System.out.println(root.getName());
}
@SuppressWarnings("unchecked")
List<Element> list = root.getChildren("student");
// child
for (int i = 0; i < list.size(); i++) {
Element element = (Element) list.get(i);
@SuppressWarnings("unchecked")
List<Element> idChildElements = element.getChildren();
/*System.out.println("idChildElements.size():"
+ idChildElements.size());*/
Student stu = new Student();
for (int k = 0; k < idChildElements.size(); k++) {
Element element2 = (Element) idChildElements.get(k);
String value = element2.getValue();
switch (k) {
case 0:
stu.setStuName(value);
break;
case 1:
stu.setStuCity(value);
break;
case 2:
stu.setStuScore(Double.parseDouble(value));
break;
}
//System.out.println(value.trim());
//fr.write(value.trim()+" \n");
}
stuList.add(stu);
}
} catch (Exception e) {
e.printStackTrace();
}
return stuList;
}
/**
* 排序
* @param list
* @return List<StudentVO> [返回类型说明]
*/
public static List<Student> array(List<Student> list) {
Student stuTemp = null;
// 冒泡排序
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.size() - i - 1; j++) {
stuTemp = new Student();
if (list.get(j).getStuScore() < list.get(j + 1).getStuScore()) {
stuTemp = list.get(j);
list.set(j, list.get(j + 1));
list.set(j + 1, stuTemp);
}
}
}
return list;
}
/**
* 写入文件 <功能详细描述>
*
* @param stu
* @return void [返回类型说明]
*/
public static void write(List<Student> stu) {
File file = new File("D:\\1\\result_2.txt");
try {
file.createNewFile();
FileWriter resultFile = new FileWriter(file);
PrintWriter myFile = new PrintWriter(resultFile); for (int i = 0; i < stu.size(); i++) {
// 每行每行写入
myFile.println(stu.get(i).getStuName() + " "
+ stu.get(i).getStuCity() + " "
+ stu.get(i).getStuScore());
if (i > 3) {
break;
}
}
myFile.close();
resultFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}}package com.isoftstone.readxml;public class Student { private String stuName;
private String stuCity;
private double stuScore;
public double getStuScore() {
return stuScore;
}
public void setStuScore(double stuScore) {
this.stuScore = stuScore;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getStuCity() {
return stuCity;
}
public void setStuCity(String stuCity) {
this.stuCity = stuCity;
}
}<?xml version="1.0" encoding="UTF-8"?>
<students>
<student>
<name>wangwuyi</name>
<city>nanjing</city>
<score>90</score>
</student>
<student>
<name>kangyongqiang</name>
<city>nanjing</city>
<score>95</score>
</student></students>
这是我写的,各位大神根据题目,帮我改改!谢谢
import java.util.Collections;
import java.util.Comparator;
import java.util.List;/**
* 成绩表
*/
public abstract class ScoreTable {
private List<Score> scores; /**
* 从文件中加载成绩表
*/
public void loadFile(File inFile) {
scores = doLoadFile(inFile);
} protected abstract List<Score> doLoadFile(File file); /**
* 对成绩表进行排序
*/
public void sort() {
if (scores != null) {
Collections.sort(scores, new Comparator<Score>() {
@Override
public int compare(Score o1, Score o2) {
return Integer.compare(o1.getTotalScore(),
o2.getTotalScore());
}
});
}
} /**
* 将成绩表输出到文件
*/
public void writeFile(File outFile) {
doWriteFile(outFile);
} protected void doWriteFile(File outFile) {
}
}
还有一个学生成绩单类,这个就相对很简单了。package com.zhengjihuaren.csdn;public class Score {
private String name;
private String id;
private int totalScore; public Score(String name, String id, int totalScore) {
super();
this.name = name;
this.id = id;
this.totalScore = totalScore;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public int getTotalScore() {
return totalScore;
} public void setTotalScore(int totalScore) {
this.totalScore = totalScore;
}}
又怎么实现那???
大学列表:青华大学、北京大学、南京大学、复旦大学、南京职业技术学院
说明:
A类大学为青华大学、北京大学,分数线为340,名额各为3名,;
B类大学为南京大学、复旦大学,分数线为320,名额各为10名;;
C类大学为南京职业技术学院,分数线为250,名额不限;
分数超过名额应该取最高分;达不到分数线可以不录取;
录取按大学类别进行:先A类,再B类,最后C类;
同类大学之间可以抢学生,同一学生只能被一所大学录取,以先录取为准;
结果通过IO输出result_2.txt,如:
青华大学:
学员姓名学员ID[总分:457,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
学员姓名学员ID[总分:448,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
北京大学:
学员姓名学员ID[总分:457,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
学员姓名学员ID[总分:448,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
南京大学:
学员姓名学员ID[总分:457,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
学员姓名学员ID[总分:448,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
复旦大学:
学员姓名学员ID[总分:457,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
学员姓名学员ID[总分:448,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
南京职业技术学院:
学员姓名学员ID[总分:457,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
学员姓名学员ID[总分:448,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
未被录取学员:学员姓名学员ID[总分:128],学员姓名学员ID[总分:215]