1、Person.java。记录电话簿的人名。
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package PhoneText;
import java.io.*;
import java.util.*;
/**
*
* @author pc
*/
public class Person implements Comparable,Serializable{
private String firstName;
private String surName;
public Person(String firstName,String surName)
{
this.firstName=firstName;
this.surName=surName;
}
public String toString()
{
return firstName+""+surName;
}
public int compareTo(Object person)
{
int result=surName.compareTo(((Person)person).surName);
return result==0?firstName.compareTo(((Person)person).firstName):result;
}
public boolean equals(Object person)
{
return compareTo(person)==0;
}
public int hashCode()
{
return 7 * firstName.hashCode()+13 * surName.hashCode();
}
public static Person readPerson()
{
Scanner in = new Scanner(System.in);
System.out.println("\nEnter first name:");
String firstName = in.nextLine().trim();
System.out.println("Enter surName:");
String surName=in.nextLine().trim();
return new Person(firstName,surName);
}
}
2、PhoneNumber.java。记录某个电话号码的信息,包括区号和电话号码。
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package PhoneText;
import java.io.*;
import java.util.*;
/**
*
* @author pc
*/
class PhoneNumber implements Serializable{
private String areaCode;
private String number;
public PhoneNumber(String areaCode,String number)
{
this.areaCode=areaCode;
this.number=number;
}
public String toString() {
return areaCode + " " + number;
}
public static PhoneNumber readNumber()
{
Scanner in = new Scanner(System.in);
System.out.println("\nEnter the area code:");
String area = in.nextLine();
// System.out.println("Enter the local code:");
// area = in.nextLine();
System.out.println("Enter the number:");
String number =""+in.nextLine();
return new PhoneNumber(area,number);
}
}
3、BookEntry.java。记录电话簿的每一项内容,包括人名和电话号码。
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package PhoneText;
/**
*
* @author pc
*/
public class BookEntry {
private Person person;
private PhoneNumber number;
public BookEntry(Person person, PhoneNumber number) {
this.person = person;
this.number = number;
}
public Person getPerson(){return person;}
public PhoneNumber getNumber(){return number;}
public String toString(){ return person.toString()+"\n"+number.toString();}
public static BookEntry readEntry()
{
return new BookEntry(Person.readPerson(),PhoneNumber.readNumber());
}
}
4、PhoneBook.java。作为电话簿存储相应信息。
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package PhoneText;
import java.util.*;
/**
*
* @author pc
*/
class PhoneBook {
private HashMap<Person,BookEntry>phonebook=new HashMap<Person,BookEntry>();
public void addEntry(BookEntry entry)
{
phonebook.put(entry.getPerson(), entry);
}
public BookEntry getEntry(Person key)
{
return (BookEntry)phonebook.get(key);
}
public PhoneNumber getNumber(Person key)
{
return getEntry(key).getNumber();
}
}
5、TryPhoneBook.java。主面板。
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package PhoneText;
import java.util.*;
/**
*
* @author pc
*/
public class TryPhoneBook {
public static void main(String[] args) {
PhoneBook book = new PhoneBook();
Scanner in = new Scanner(System.in);
Person someone;
for(;;)
{
System.out.println("Enter 1 to enter a new phone book entry\n"+"Enter 2 to find the number for a name\nEnter 9 to quit");
int what = in.nextInt();
switch(what){
case 1:
book.addEntry(BookEntry.readEntry());
break;
case 2:
someone = Person.readPerson();
BookEntry entry = book.getEntry(someone);
if(entry==null)
System.out.println("The number for"+someone+"was not found.");
else
System.out.println("The number for"+someone+"is"+book.getEntry(someone).getNumber());
break;
case 9:
System.out.println("Ending program.");
return;
default:
System.out.println("Invalid delection,try again.");
break;
}
}
}
}
如果出现中文乱码,将项目的编码设置为GB2312。!!!