我必须从二进制文件中读取,然后我应该按名称顺序显示输出。
问题:
编写一个程序,从二进制文件 person.dat 中读取数据。 (请从网站下载二进制文件。)然后,按姓名升序显示姓名、年龄和性别(M – 男,F – 女)。
二进制文件的结构如下:
intVariable-TotalNumberofRecord
StringVariable-Name IntVariable-Age CharVariable-Gender
…
StringVariable-Name IntVariable-Age CharVariable-Gender
这是二进制文件(person.dat)中的内容
’ wa Mohamad Ali M Siti Nuraini F Tan Mei Kuan F Mutu Samy M Alvin Tan M
================================================
这是我编写的代码。问题是我不知道如何按字母顺序对输出进行排序。请帮我解决这个问题,谢谢。
try {
ObjectInputStream inputStream = new ObjectInputStream (new FileInputStream("C:/Users/user/Desktop/person.dat"));
String input;
int age, record;
char gender;
record = inputStream.readInt();
System.out.println("Total number of records: "+record);
try{
while(true) {
input = inputStream.readUTF();
age = inputStream.readInt();
gender = inputStream.readChar();
System.out.println(input+" " +age +" " +gender);}
}catch(EOFException e){}
inputStream.close();
} catch (FileNotFoundException e) {
System.out.println("File was not found");
} catch (IOException e) {
System.out.println("Problem with file output.");
}
最佳答案
要对数据进行排序,必须先将数据放入集合(如ArrayList
)中,排序,然后输出。
在将数据放入集合之前,您应该创建一个类
来将数据保存在一起。它应该是一个非常简单的类,只在构造函数中接受姓名、年龄和性别。
要对类的实例进行排序,请让类实现 Comparable
界面。 .compareTo
方法只能调用正在比较的名称的相同方法。
我希望这足以理解您其余的讲义。
关于java - 如何按名称显示输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26891070/