[java프로그래밍] IO 흐름과 집합 클래스의 종합 문제

2854 단어 Java 관련

요구 사항:


1. 학생 5명, 한 학생당 3개 과목
2.키보드에서 상기 데이터를 입력(성명, 3과목 성적)
3. 입력 형식: zhangshan, 30, 40, 60 및 합계 성적 계산
4. 학생 정보와 계산된 총 성적을 낮은 순서에서 높은 순서로 저장

아이디어:


1. 먼저 학생 대상을 만들고 비교기를 실현하여 학생 대상 자체가 비교성을 가지도록 하고hashcode()와 equeas() 방법을 복사해야 한다.
2. 키보드 입력을 만들고 TreeSet 집합을 만들고 키보드에 입력된 데이터를 집합에 저장합니다
3. 집합된 데이터를 파일에 저장
import java.io.*;
import java.util.*;
class  StudentInfoTest
{
	public static void main(String[] args) throws IOException
	{
		// 
		Comparator cmp=Collections.reverseOrder();
		Set treeset=StudentInfoTool.getStudentInfo(cmp);
		StudentInfoTool.writeToFile(treeset);
	}
}
// 
class Student implements Comparable
{
	private String name;
	private int cn;
	private int ma;
	private int en;
	private int sum;
	Student(String name,int cn,int ma,int en)
	{
		this.name=name;
		this.cn=cn;
		this.ma=ma;
		this.en=en;
		sum=cn+ma+en;
	}
	public String getName()
	{
		return name;
	}
	public int getSum()
	{
		return sum;
	}
	// hashCode 
	public int hashCode()
	{
		return this.name.hashCode()+sum*6;
	}
	// equals 
	public boolean equals(Object obj)
	{
		if(obj instanceof Student)
			throw new ClassCastException(" !");
		Student str=(Student)obj;
		return this.name.equals(str.getName()) && this.sum==str.getSum();		
	}
	public int compareTo(Student s)
	{
		int num=new Integer(this.sum).compareTo(new Integer(s.sum));
		if(num==0)
			return this.name.compareTo(s.name);
		return num;
	}
	public String toString()
	{
		return "["+name+", "+cn+", "+ma+", "+en+"]";
	}
}
// 
class StudentInfoTool
{
	// 
	public static Set getStudentInfo() throws IOException
	{
		return StudentInfoTool.getStudentInfo(null);		
	}
	public static Set getStudentInfo(Comparator cmp) throws IOException
	{
		// 
		BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
		// TreeSet ,cmp 
		Set treeset=new TreeSet(cmp);		
		String line=null;
		while((line=bufr.readLine())!=null)
		{
			if("over".equals(line))
				break;
			// "," 
			String[] info=line.split(",");
			Student stu=new Student(info[0],Integer.parseInt(info[1]),
									Integer.parseInt(info[2]),
									Integer.parseInt(info[3]));
			treeset.add(stu);
		}
		bufr.close();
		System.out.println(treeset);
		return treeset;
	}
	// 
	public static void writeToFile(Set stu) throws IOException
	{
		// 
		BufferedWriter bufw=new BufferedWriter(new FileWriter("studentInfo.txt"));
		// 
		for(Student s : stu)
		{
			bufw.write(s.toString()+"\t");
			bufw.write(s.getSum()+"");
			bufw.newLine();
			bufw.flush();
		}	
		bufw.close();
	}
}

좋은 웹페이지 즐겨찾기