http://pastebin.com/E5TspHfK - Object Class,名为PhoneBookEntry
http://pastebin.com/Ce94SJzB - Method Class,名为PhoneBook
http://pastebin.com/ENsVT0jJ - Tester Class,名为PhoneBookTester
基本上我的这三个课程的目标是制作一个“电话簿” - 一个基于文本的程序,允许人们创建他们的联系人数据库,他们可以添加条目,编辑/删除/显示条目,搜索和排序条目。
程序正在创建的PhoneBookEntry对象数组将输出到文本文件,该文件以“fName \ tlName \ tnumber”格式显示。这些显然是可以存储在PhoneBookEntry类中的各种变量。
问题是,要写入文本文件我必须使用PrintWriter类,但是如何重新排列数组的顺序,如何更新文本文件?因为我没有向数组发送添加的条目,所以我将它们发送到文本文件本身,但如果使用排序或编辑功能,则修改数组的内容,而不是文本文件。
那么,如果你不能用PrintWriter类“向后写”,我怎么能修改文本文件本身的内容?相关的代码位粘贴在下面。
电话簿:
public static int filledTil=-1;
FileWriter fw = new FileWriter("C:\\Users\\Hana\\Desktop\\PhoneBook.txt");
PrintWriter output = new PrintWriter(fw);
static PhoneBookEntry[] phoneBook = new PhoneBookEntry[500];
public PhoneBook() throws IOException {
Scanner input = new Scanner(new File("C:\\Users\\Hana\\Desktop\\PhoneBook.txt"));
while(input.hasNext()){
Scanner sc = new Scanner(input.nextLine());
String fName = sc.next();
String lName = sc.next();
String number = sc.next();
filledTil++;
phoneBook[filledTil] = new PhoneBookEntry(fName, lName, number);
}
input.close();
}
电话簿排序方法
public static int partition(){
int lo = 0;
int hi = filledTil;
PhoneBookEntry temp;
PhoneBookEntry pivot = phoneBook[(lo + hi) / 2];
while(lo <= hi){
while(phoneBook[lo].lName.compareTo(pivot.lName) < 0){
lo++;
}
while(phoneBook[lo].lName.compareTo(pivot.lName) > 0){
hi--;
}
if(lo <= hi) {
temp = phoneBook[lo];
phoneBook[lo] = phoneBook[hi];
phoneBook[hi] = temp;
lo++;
hi--;
}
};
return lo;
}
public static void quickSort(int lo, int hi){
int index = partition();
if(lo < (index - 1)){
quickSort(lo, (index-1));
}
if(index < hi){
quickSort(index, hi);
}
}
电话簿退出方法
public void quit(){
output.close();
System.exit(0);
}