[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();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
메모리 유출과 메모리 넘침은 어리석게 구분할 수 없나?간단하게 정리해 드릴게요!메모리 유출과 메모리 넘침은 메모리를 합리적으로 사용할 수 없게 할 수 있지만 그 사이에 확실히 차이가 있어 헷갈리기 쉽다. 간단하게 말하면 메모리 유출은 살아남을 필요가 없는 대상이 메모리를 회수할 수 없는 것이다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.