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
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.