name class: import java.io.*; import java.util.*; public class Name { public Name(String last, String first) { this.last = last; this.first = first; } public Name(String first) { this("", first); } public boolean equals(Name same) { return first.equals(same.first) && last .equals(same.last); } public String toString() { return first + " " + last; } public String getFormal() { return first + " " + last; } public String getOfficial() { return last + ", " + first; } public static Name read(Scanner scan) { if (!scan.hasNext()) return null; String first = scan.next(); String last = scan.next(); return new Name(first, last); } public String getInitials() { return Character.toUpperCase(first.charAt(0)) + "." + Character.toUpperCase(last.charAt(0))+"."; } private String last, first; public static void main(String [] args) throws Exception { Scanner scan = new Scanner(new File("names.text")); int count = 0; Name readName = read(scan); Name readLastName =null; while(readName != null) { if(readLastName!=null && readName!=null && readLastName.equals(readName)){ System.out.println("Duplicate name \""+readName+"\" discovered"); } else{ System.out.println("name: " + readName); System.out.println("formal: " + readName.getFormal()); System.out.println("official: " + readName.getOfficial()); System.out.println("initials: " + readName.getInitials()); System.out.println(); } count++; readLastName= readName; readName = read(scan); } System.out.println("---"); System.out.println(count + " names processed."); } } Phonenumber class: import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class PhoneNumber { private String num; public PhoneNumber(String num) { this.num = num; } public String getAreaCode() { return num.substring(1, 4); } public String getExchange() { return num.substring(5, 8); } public String getLineNumber() { return num.substring(9); } public boolean isFreeToll() { if (getAreaCode().charAt(0) == '8') { return true; } return false; } public String toString() { return "phone number: " + num + "\narea code: " + getAreaCode() + "\nexchange: " + getExchange() + "\nline number: " + getLineNumber(); } public boolean equals(PhoneNumber phoneNum) { if (phoneNum.getAreaCode().compareTo(this.getAreaCode()) == 0 && phoneNum.getExchange().compareTo(this.getExchange()) == 0 && phoneNum.getLineNumber().compareTo(this.getLineNumber()) == 0) { return true; } return false; } public static String read(Scanner scan) { if (scan.hasNextLine()) { return scan.nextLine(); } return null; } public static void main(String[] args) throws FileNotFoundException { Scanner scan = new Scanner(new File("numbers.text")); PhoneNumber phoneNumNext, phoneNum = null; int counts = 0; String val = PhoneNumber.read(scan); while (val != null) { if (phoneNum == null) { phoneNum = new PhoneNumber(val); System.out.println(phoneNum + "\nis toll free: " + phoneNum.isFreeToll() + "\n"); counts++; } else { phoneNumNext = new PhoneNumber(val); if (phoneNum.equals(phoneNumNext)) { System.out.println("Duplicate phone number \"(" + phoneNumNext.getAreaCode() + ")" + phoneNumNext.getExchange() + "-" + phoneNumNext.getLineNumber() + "\" discovered"); } else { System.out.println(phoneNumNext + "\nis toll free: " + phoneNumNext.isFreeToll() + "\n"); } counts++; phoneNum = phoneNumNext; } val = PhoneNumber.read(scan); } System.out.println("---"); System.out.println(counts + " phone numbers processed."); } } phonebookentry class: import java.util.*; import java.io.*; class PhonebookEntry { private PhoneNumber phoneNumber; private Name name; public PhonebookEntry(Name name,PhoneNumber number) { this.phoneNumber= number; this.name=name; } public String toString() { return name+": "+phoneNumber; } public boolean equals(PhonebookEntry otherEntry) { if(name.equals(otherEntry.name) && !(phoneNumber.equals(otherEntry.phoneNumber)) ) { System.out.println("Warning duplicate name encountered \""+ name+": "+phoneNumber+"\" discovered"); return true; } else if(phoneNumber.equals(otherEntry.phoneNumber) && name.equals(otherEntry.name)) { System.out.println("Duplicate phone book entry \""+otherEntry+"\" discovered"); return false; } return true; } public static PhonebookEntry read(Scanner scanner) { if (!scanner.hasNext()) return null; Name newName = Name.read(scanner); PhoneNumber newphoneNumber = PhoneNumber.read(scanner); return new PhonebookEntry(newName, newphoneNumber); } public void call() { System.out.println("phone book entry: "+name+": "+phoneNumber); if(phoneNumber.isTollFree()) { System.out.println("Dialing (toll-free) "+name+": "+phoneNumber); System.out.println(); } else { System.out.println("Dialing "+name+": "+phoneNumber); System.out.println(""); } } public static void main(String[] args) throws Exception { String tempFirst="temp", tempLast="temp", tempNumber="temp"; PhoneNumber oldNumber= new PhoneNumber(tempNumber); ....not finished written here due to no space. Please follow intructions on the picture on writting phonebook class.
name class:
import java.io.*;
import java.util.*;
public class Name {
public Name(String last, String first) {
this.last = last;
this.first = first;
}
public Name(String first) {
this("", first);
}
public boolean equals(Name same) {
return first.equals(same.first) && last .equals(same.last);
}
public String toString() {
return first + " " + last;
}
public String getFormal() {
return first + " " + last;
}
public String getOfficial() {
return last + ", " + first;
}
public static Name read(Scanner scan) {
if (!scan.hasNext())
return null;
String first = scan.next();
String last = scan.next();
return new Name(first, last);
}
public String getInitials() {
return Character.toUpperCase(first.charAt(0)) + "." + Character.toUpperCase(last.charAt(0))+".";
}
private String last, first;
public static void main(String [] args) throws Exception {
Scanner scan = new Scanner(new File("names.text"));
int count = 0;
Name readName = read(scan);
Name readLastName =null;
while(readName != null) {
if(readLastName!=null && readName!=null && readLastName.equals(readName)){
System.out.println("Duplicate name \""+readName+"\" discovered");
}
else{
System.out.println("name: " + readName);
System.out.println("formal: " + readName.getFormal());
System.out.println("official: " + readName.getOfficial());
System.out.println("initials: " + readName.getInitials());
System.out.println();
}
count++;
readLastName= readName;
readName = read(scan);
}
System.out.println("---");
System.out.println(count + " names processed.");
}
}
Phonenumber class:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class PhoneNumber {
private String num;
public PhoneNumber(String num) {
this.num = num;
}
public String getAreaCode() {
return num.substring(1, 4);
}
public String getExchange() {
return num.substring(5, 8);
}
public String getLineNumber() {
return num.substring(9);
}
public boolean isFreeToll() {
if (getAreaCode().charAt(0) == '8') {
return true;
}
return false;
}
public String toString() {
return "phone number: " + num + "\narea code: " + getAreaCode()
+ "\nexchange: " + getExchange() + "\nline number: "
+ getLineNumber();
}
public boolean equals(PhoneNumber phoneNum) {
if (phoneNum.getAreaCode().compareTo(this.getAreaCode()) == 0
&& phoneNum.getExchange().compareTo(this.getExchange()) == 0
&& phoneNum.getLineNumber().compareTo(this.getLineNumber()) == 0) {
return true;
}
return false;
}
public static String read(Scanner scan) {
if (scan.hasNextLine()) {
return scan.nextLine();
}
return null;
}
public static void main(String[] args) throws FileNotFoundException {
Scanner scan = new Scanner(new File("numbers.text"));
PhoneNumber phoneNumNext, phoneNum = null;
int counts = 0;
String val = PhoneNumber.read(scan);
while (val != null) {
if (phoneNum == null) {
phoneNum = new PhoneNumber(val);
System.out.println(phoneNum + "\nis toll free: "
+ phoneNum.isFreeToll() + "\n");
counts++;
} else {
phoneNumNext = new PhoneNumber(val);
if (phoneNum.equals(phoneNumNext)) {
System.out.println("Duplicate phone number \"("
+ phoneNumNext.getAreaCode() + ")"
+ phoneNumNext.getExchange() + "-"
+ phoneNumNext.getLineNumber() + "\" discovered");
} else {
System.out.println(phoneNumNext + "\nis toll free: "
+ phoneNumNext.isFreeToll() + "\n");
}
counts++;
phoneNum = phoneNumNext;
}
val = PhoneNumber.read(scan);
}
System.out.println("---");
System.out.println(counts + " phone numbers processed.");
}
}
phonebookentry class:
import java.util.*;
import java.io.*;
class PhonebookEntry
{
private PhoneNumber phoneNumber;
private Name name;
public PhonebookEntry(Name name,PhoneNumber number)
{
this.phoneNumber= number;
this.name=name;
}
public String toString()
{
return name+": "+phoneNumber;
}
public boolean equals(PhonebookEntry otherEntry)
{
if(name.equals(otherEntry.name) && !(phoneNumber.equals(otherEntry.phoneNumber)) )
{
System.out.println("Warning duplicate name encountered \""+ name+": "+phoneNumber+"\" discovered");
return true;
}
else if(phoneNumber.equals(otherEntry.phoneNumber) && name.equals(otherEntry.name))
{
System.out.println("Duplicate phone book entry \""+otherEntry+"\" discovered");
return false;
}
return true;
}
public static PhonebookEntry read(Scanner scanner)
{
if (!scanner.hasNext()) return null;
Name newName = Name.read(scanner);
PhoneNumber newphoneNumber = PhoneNumber.read(scanner);
return new PhonebookEntry(newName, newphoneNumber);
}
public void call()
{
System.out.println("phone book entry: "+name+": "+phoneNumber);
if(phoneNumber.isTollFree())
{
System.out.println("Dialing (toll-free) "+name+": "+phoneNumber);
System.out.println();
}
else
{
System.out.println("Dialing "+name+": "+phoneNumber);
System.out.println("");
}
}
public static void main(String[] args) throws Exception
{
String tempFirst="temp", tempLast="temp", tempNumber="temp";
PhoneNumber oldNumber= new PhoneNumber(tempNumber);
....not finished written here due to no space. Please follow intructions on the picture on writting phonebook class.
![In this version, you are to reimplement the functionality of version 1, but this time using the classes you
coded in Lab 3. The basic output is identical to that of version 1, but now:
The three parallel arrays are gone – replaced with a slngle array of type PhonebookEntry.
You should be reading In the entrles uslng the read method of your PhonebookEntry class (which in turn
uses the read methods of the Name and PhoneNumber classes).
Use the equals methods of the Name and PhoneNumber classes In your lookup and reverselookup
methods.
Use the toString methods to print out Informatlon.
Make 100 the capacity of your Phonebook array
Throw an exception (of class Exception) if the capacity of the Phonebook array is exceeded.
Place a try/catch around your entire main and catch both FileNotFoundExceptions and Exceptions
(remember, the order of appearance of the exception types in the catch blocks can make a difference).
Do not use
BufferedReader
whllețtrue)
breaks
The name of your appllcatlon class should be Phonebook. Also, you should submit ALL your classes (I.e.,
Name, Strip off publlc from all your class definintlons
Sample Run #1
For example, if the file phonebooktext contains:
David (123)456-7890
Keith (234)567-8901
Jackie (345)678-9012
Augenstein Moshe (456)789-0123
(567)890-1234
Tenenbaum Aaron (678)901-2345
Gerald (789)012-3456
(890)123-4567
Langsam Yedidyah (901)234-5678
Joseph (012)345-6789
Arnow
Harrow
Jones
So
Dina
Weiss
Cox
Jim
Thurm](/v2/_next/image?url=https%3A%2F%2Fcontent.bartleby.com%2Fqna-images%2Fquestion%2Ffbb4ddf1-ce9d-407f-a13a-103abb2adbdc%2F1289acac-15a7-4ba6-9317-fffba35410fc%2Fl3q36mrn_processed.png&w=3840&q=75)
![Here is a sample execution of the program.
User Input Is In bold. Your program should replicate the prompts and output:
lookup, reverse-lookup, quit (I/r/q)? I
last name? Arnow
first name? Davld
David Arnow's phone number is (123)456-7890
lookup, reverse-lookup, quit (I/r/g)? r
phone number (nnn-nnn-nnnn)? (456)789-0123
(456)789-0123 belongs to Moshe Augenstein
lookup, reverse-lookup, quit (I/r/g)? I
last name? Welss
first name? Jerrold
-- Name not found
lookup, reverse-lookup, quit (I/r/q)? I
last name? Welss
first name? Gerald
Gerald Weiss's phone number is (789)012-3456
lookup, reverse-lookup, quit (V/r/g)? r
phone number (nnn-nnn-nnnn)? (111)123-4567
- Phone number not found
lookup, reverse-lookup, quit (I/r/a)? q
3 lookups performed
2 reverse lookups performed
Sample Run #2
If the file phonebooktext contains:
more than 100 names
Here is a sample execution of the program.
User Input Is In bold. Your program should replicate the prompts and output:
*** Exception *** Phonebook capacity exceeded - increase size of underlying array](/v2/_next/image?url=https%3A%2F%2Fcontent.bartleby.com%2Fqna-images%2Fquestion%2Ffbb4ddf1-ce9d-407f-a13a-103abb2adbdc%2F1289acac-15a7-4ba6-9317-fffba35410fc%2Ffi64f17_processed.png&w=3840&q=75)
![](/static/compass_v2/shared-icons/check-mark.png)
Trending now
This is a popular solution!
Step by step
Solved in 2 steps
![Blurred answer](/static/compass_v2/solution-images/blurred-answer.jpg)
![Database System Concepts](https://www.bartleby.com/isbn_cover_images/9780078022159/9780078022159_smallCoverImage.jpg)
![Starting Out with Python (4th Edition)](https://www.bartleby.com/isbn_cover_images/9780134444321/9780134444321_smallCoverImage.gif)
![Digital Fundamentals (11th Edition)](https://www.bartleby.com/isbn_cover_images/9780132737968/9780132737968_smallCoverImage.gif)
![Database System Concepts](https://www.bartleby.com/isbn_cover_images/9780078022159/9780078022159_smallCoverImage.jpg)
![Starting Out with Python (4th Edition)](https://www.bartleby.com/isbn_cover_images/9780134444321/9780134444321_smallCoverImage.gif)
![Digital Fundamentals (11th Edition)](https://www.bartleby.com/isbn_cover_images/9780132737968/9780132737968_smallCoverImage.gif)
![C How to Program (8th Edition)](https://www.bartleby.com/isbn_cover_images/9780133976892/9780133976892_smallCoverImage.gif)
![Database Systems: Design, Implementation, & Manag…](https://www.bartleby.com/isbn_cover_images/9781337627900/9781337627900_smallCoverImage.gif)
![Programmable Logic Controllers](https://www.bartleby.com/isbn_cover_images/9780073373843/9780073373843_smallCoverImage.gif)