Answer:
Kindly note that, you're to replace "at" with shift 2 as the brainly text editor can't take the symbol
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<Item> people;
/**
Constructs a LookupTable object.
*/
public LookupTable()
{
people = new ArrayList<Item>();
}
/**
Reads key/value pairs.
"at"param 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.
"at"param k the key to find
"at"return 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.
"at"param v the value to find
"at"return 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
Kindly check the attached output image below.