A personal phone directory contains room for first names and phone numbers for 30 people. Assign names and phone numbers for the first 10 people. Prompt the user for a name, and if the name is found in the list, display the corresponding phone number. If the name is not found in the list, prompt the user for a phone number, and add the new name and phone number to the list.
This is the code I have. I have gotten 1 out of the 4 checks right -
import java.util.*;
class PhoneNumbers {
public static void main(String[] args) {
// Write your code here
int room,j=0;
boolean present= false;
String [] names ={"Gina", "Marcia", "Rita", "Jennifer", "Fred", "Neil", "Judy", "Arlene", "LaWanda", "Deepak"};
String [] number= {"(847) 341-0912","(847) 341-2392", "(847) 354-0654","(414) 234-0912", "(414) 435-6567", "(608) 123-0904", "(608) 435-0434", "(608) 123-0312", "(920) 787-9813", "(930) 412-0991" };
String nameEntered;
Scanner input = new Scanner(System.in);
System.out.println("Please enter name: "); //enter name to be searched
nameEntered = input.nextLine();
for(room = 0; room < names.length; room++) //search for the name
{
if(names[room].equals(nameEntered))
{
present =true; //if found return true
j=room; //assign value of index at which the name is found
break;
}
}
if(present==true) //check for true of false
{
System.out.println(names[j] + " corresponding number is " +number[j]);
}
//if name is not found enter new entries from user
else
{
System.out.println("Name and phone number not found");
System.out.println("Enter new entries from user:");
//declare new array for name and number to be entered by user
String newname[]=new String[20];
String newnumber[]= new String[20];
for(int i=0;i<newname.length;i++)
{
System.out.println();
System.out.println("Enter quit to stop adding names and numbers otherwise Enter the phone number:");
String temp=input.nextLine();
if(!temp.equals("quit")) {
newnumber[i]=temp;
System.out.println("Enter name to the following phone number:");
newname[i]=input.nextLine();
}
else {
break;
}
}
System.out.println("The new list of name and corresponding phone number is: ");
int aLen = names.length; //length of names array
int bLen = newname.length; //length of new name array
String[] finalnamelist = new String[aLen + bLen];
//copy two array in new array using copy function
System.arraycopy(names, 0, finalnamelist, 0, aLen);
System.arraycopy(newname, 0, finalnamelist, aLen, bLen);
int cLen = number.length; //length of number array
int dLen = newnumber.length; //length of new number array
String[] finalnumberlist = new String[cLen + dLen];
//copy the number into new array
System.arraycopy(number, 0, finalnumberlist, 0, cLen);
System.arraycopy(newnumber, 0,finalnumberlist, cLen, dLen);
//print the new array with corresponding name and numbers
System.out.println("Final list is:");
for(int k=0;k<finalnamelist.length;k++)
{
if(finalnamelist[k]!=null)
System.out.println(finalnamelist[k]+" "+finalnumberlist[k]);
}
}
}
}
Example of one of the wrong checks
Phone Numbers Gina Deepak
Input
Gina
Deepak
quit
Output
Please enter name:
Gina
Gina corresponding number is (847) 341-0912
Deepak
quit
Results
(930) 412-0991 (Wrong)
(847) 341-0912 (Green for correct)
Example of a wrong check
Phone Numbers Smith (123) 456-7890
Input
Smith
(123) 456-7890
Smith
quit
Output
Please enter name: Smith
Name and phone number not found Enter new entries from user:
Enter quit to stop adding names and numbers otherwise Enter the phone number: (123) 456-7890
Enter name to the following phone number:
Smith
Enter quit to stop adding names and numbers otherwise Enter the phone number:
quit
The new list of name and corresponding phone number is: Final list is: Gina (847) 341-0912 Marcia (847) 341-2392 Rita (847) 354-0654 Jennifer (414) 234-0912 Fred (414) 435-6567 Neil (608) 123-0904 Judy (608) 435-0434 Arlene (608) 123-0312 LaWanda (920) 787-9813 Deepak (930) 412-0991 Smith (123) 456-7890
Results
(123) 456-7890
The unexpected output is the new list of names - That isn't meant to show it seems cause it is counting it wrong due to that