Ask Question
4 October, 01:12

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.

+5
Answers (1)
  1. 4 October, 01:18
    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 & Technology if the answers seem to be not correct or there’s no answer. Try a smart search to find answers to similar questions.
Search for Other Answers