Ask Question
3 July, 22:11

Write a telephone lookup program. Read a data set of 1,000 names and telephone numbers from a file that contains the numbers in random order. Handle lookups by name and also reverse lookups by phone number. Use a binary search for both lookups.

+2
Answers (1)
  1. 3 July, 23:17
    0
    See explaination

    Explanation:

    PhoneLookup. java

    import java. io. FileReader;

    import java. io. IOException;

    import java. util. Scanner;

    public class PhoneLookup

    {

    public static void main (String[] args) throws IOException

    {

    Scanner in = new Scanner (System. in);

    System. out. println ("Enter the name of the phonebook file: ");

    String fileName = in. nextLine ();

    LookupTable table = new LookupTable ();

    FileReader reader = new FileReader (fileName);

    table. read (new Scanner (reader));

    boolean more = true;

    while (more)

    {

    System. out. println ("Lookup N) ame, P) hone number, Q) uit?");

    String cmd = in. nextLine ();

    if (cmd. equalsIgnoreCase ("Q"))

    more = false;

    else if (cmd. equalsIgnoreCase ("N"))

    {

    System. out. println ("Enter name:");

    String n = in. nextLine ();

    System. out. println ("Phone number: " + table. lookup (n));

    }

    else if (cmd. equalsIgnoreCase ("P"))

    {

    System. out. println ("Enter phone number:");

    String n = in. nextLine ();

    System. out. println ("Name: " + table. reverseLookup (n));

    }

    }

    }

    }

    LookupTable. java

    import java. util. ArrayList;

    import java. util. Collections;

    import java. util. Scanner;

    /**

    A table for lookups and reverse lookups

    */

    public class LookupTable

    {

    private ArrayList people;

    /**

    Constructs a LookupTable object.

    */

    public LookupTable ()

    {

    people = new ArrayList ();

    }

    /**

    Reads key/value pairs.

    atparam in the scanner for reading the input

    */

    public void read (Scanner in)

    {

    while (in. hasNext ()) {

    String name = in. nextLine ();

    String number = in. nextLine ();

    people. add (new Item (name, number));

    }

    }

    /**

    Looks up an item in the table.

    atparam k the key to find

    atreturn the value with the given key, or null if no

    such item was found.

    */

    public String lookup (String k)

    {

    String output = null;

    for (Item item: people) {

    if (k. equals (item. getName ())) {

    output = item. getNumber ();

    }

    }

    return output;

    }

    /**

    Looks up an item in the table.

    atparam v the value to find

    atreturn the key with the given value, or null if no

    such item was found.

    */

    public String reverseLookup (String v)

    {

    String output = null;

    for (Item item: people) {

    if (v. equals (item. getNumber ())) {

    output = item. getName ();

    }

    }

    return output;

    }

    }

    Item. java

    public class Item {

    private String name, number;

    public Item (String aName, String aNumber) {

    name = aName;

    number = aNumber;

    }

    public String getName () {

    return name;

    }

    public String getNumber () {

    return number;

    }

    }

    input. txt

    Abbott, Amy

    408-924-1669

    Abeyta, Ric

    408-924-2185

    Abrams, Arthur

    408-924-6120

    Abriam-Yago, Kathy

    408-924-3159

    Accardo, Dan

    408-924-2236

    Acevedo, Elvira

    408-924-5200

    Acevedo, Gloria

    408-924-6556

    Achtenhagen, Stephen

    408-924-3522

    Note: Replace all the "at" with at symbol
Know the Answer?
Not Sure About the Answer?
Find an answer to your question ✅ “Write a telephone lookup program. Read a data set of 1,000 names and telephone numbers from a file that contains the numbers in random ...” in 📘 Computers and Technology if you're in doubt about the correctness of the answers or there's no answer, then try to use the smart search and find answers to the similar questions.
Search for Other Answers