I already have the code for the assignment below, but there is some errors in the code. Please help me fix them. The assignment: Make 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. This assignment needs a resource class and a driver class. The resource class and the driver class will be in two separate files. The resource class will contain all of the methods and the driver class only needs to call the methods. The driver class needs to have only 5 lines of code. The code needs to be written in Java. Please help me with exactly what I asked for help. The code: 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. @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. @param k the key to find @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. @param v the value to find @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; } } The error is shown in the picture I attached, please have a look at the picture.
I already have the code for the assignment below, but there is some errors in the code. Please help me fix them.
The assignment:
Make 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. This assignment needs a resource class and a driver class. The resource class and the driver class will be in two separate files. The resource class will contain all of the methods and the driver class only needs to call the methods. The driver class needs to have only 5 lines of code. The code needs to be written in Java. Please help me with exactly what I asked for help.
The code:
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.
@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.
@param k the key to find
@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.
@param v the value to find
@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;
}
}
The error is shown in the picture I attached, please have a look at the picture.
Step by step
Solved in 4 steps with 4 images