Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Write a telephone lookup program. Read a data set of names and telephone numbers

ID: 3837996 • Letter: W

Question

Write a telephone lookup program. Read a data set of 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. Use the following data set:

Bob|555-1234

Joe|555-2345

John|555-3456

Luke|555-4567

Mark|555-5678

Matthew|555-6789

The program should prompt the user as follows:

      L)ookup Name, Lookup N)umber or Q)uit?

      Enter the name:

         Or

      Enter the Number:

Explanation / Answer

package sample;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.StringTokenizer;
import java.util.TreeMap;

public class TelephoneLookup {
      
       private static final String FILENAME="D:\WS17.2\Sample\src\sample\Phonebook.txt";
      
       public static void main(String[] args)
       {
           BufferedReader br = null;
           FileReader fr = null;

           try {

               fr = new FileReader(FILENAME);
               br = new BufferedReader(fr);

               String sCurrentLine;

               br = new BufferedReader(new FileReader(FILENAME));
              
               //below Name lookup
               TreeMap<String, String> nameLookup = new TreeMap<String, String>();
               //below is phone lookup
               TreeMap<String, String> phoneLookup = new TreeMap<String, String>();
               while ((sCurrentLine = br.readLine()) != null) {
                   System.out.println(sCurrentLine);
                  
                   StringTokenizer st = new StringTokenizer(sCurrentLine, "|");
                   String name = null,number = null;
                   while(st.hasMoreTokens())
                   {
                       name = st.nextToken();
                       if(st.hasMoreTokens())
                           number = st.nextToken();
                   }
                   phoneLookup.put(name, number);
                   nameLookup.put(number, name);
               }
               /*System.out.println("PhoneLookup");
              
               for(Map.Entry m:phoneLookup.entrySet()){
                   System.out.println(m.getKey()+" "+m.getValue());
                   }
              
               System.out.println("NameLoopup");
               for(Map.Entry m:nameLookup.entrySet()){
                   System.out.println(m.getKey()+" "+m.getValue());
                   } */
              
               boolean c=false;
               while(true)
               {
               System.out.println("Please enter a char");
               System.out.println("L:Lookup Name");
               System.out.println("N:Lookup Number");
               System.out.println("Q:Quit");
              
               char choice;
               Scanner sc = new Scanner(System.in);
               choice = sc.next().charAt(0);
               switch (choice) {
               case 'L':
               {
                   System.out.println("Enter the name:");
                   String name = sc.next();
                   //System.out.println(name);
                   System.out.println("Number is :"+phoneLookup.get(name));
                   break;
               }
               case 'N':
               {
                   System.out.println("Enter the number:");
                   String number = sc.next();
                   //System.out.println(number);
                   System.out.println("Name is :"+nameLookup.get(number));
                   break;
               }  
               case 'Q':
                   c= true;
                   break;
               default:
                   System.out.println("Please enter a valid choice");
                   break;
               }
               if(c==true)
                   break;
              
               }

           } catch (IOException e) {

               e.printStackTrace();

           } finally {

               try {

                   if (br != null)
                       br.close();

                   if (fr != null)
                       fr.close();

               } catch (IOException ex) {

                   ex.printStackTrace();

               }

           }
       }
   }

//output:

Bob|555-1234
Joe|555-2345
John|555-3456
Luke|555-4567
Mark|555-5678
Matthew|555-6789
Please enter a char
L:Lookup Name
N:Lookup Number
Q:Quit
L
Enter the name:
Bob
Number is :555-1234
Please enter a char
L:Lookup Name
N:Lookup Number
Q:Quit
N
Enter the number:
555-6789
Name is :Matthew
Please enter a char
L:Lookup Name
N:Lookup Number
Q:Quit
p
Please enter a valid choice
Please enter a char
L:Lookup Name
N:Lookup Number
Q:Quit
Q

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote