Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

The following is the problem: Write an application that allows a user to enter t

ID: 3853418 • Letter: T

Question

The following is the problem:

Write an application that allows a user to enter the names and birthdays of up to 10 friends. Continue to prompt the user for names and birthdates until the user enters the sentinel value “ZZZ” for a name or has entered 10 names, whichever comes first. When the user is finished entering names, produce a count of how many names were entered, and then display the names. In a loop, continuously ask the user to type one of the names and display the corresponding birthdate or an error message if the name has not been previously entered. The loop continues until the user enters “ZZZ” for a name. Save the file as BirthdayReminder.java.

This is what I have so far:

import java.util.*;

public class BirthdayReminder

{

public static void main(String[] args)

{

final int NUM_NAMES = 10;

String sentinal = "ZZZ";

int count = 0;

String name = null;

String birthdate = null;

String[] names = new String[NUM_NAMES];

String[] birthdates = new String[NUM_NAMES];

Scanner input = new Scanner(System.in);

System.out.println("Enter a name or " + sentinal + " to quit > ");

name = input.nextLine();

while(name != sentinal && count < NUM_NAMES)

{

System.out.println("Enter birthdate (mm/dd) > ");

birthdate = input.nextLine();

names[count] = name;

birthdates[count] = birthdate;

System.out.println("Enter a name or " + sentinal + " to quit > ");

name = input.nextLine();

++ count;

}

System.out.print(" Count of names is " + count);

boolean repeat = true;

boolean found = false;

while(repeat)

{

System.out.println("Enter birthdate (mm/dd) > ");

birthdate = input.nextLine();

if(name == sentinal)

repeat = false;

else

{

for(int x = 0; x < count && found; ++x)

{

if(names[x] == (name))

{

found =true;

birthdate = birthdates[x];

}

}

if(found)

System.out.println("Birthdate of " + name + " is " + birthdate);

else

System.out.println("Birthdate of " + name + "is not found");

}

found = false;

}

}

}

The issue is that whenever I type "ZZZ" it does not end like it is suppose to. Can you identify what I am missing?

Explanation / Answer

Java:

import java.util.*;

public class BirthdayReminder{

public static void main(String[] args)

{

final int NUM_NAMES = 10;

String sentinal = "ZZZ";

int count = 0;

String name = null;

String birthdate = null;

String[] names = new String[NUM_NAMES];

String[] birthdates = new String[NUM_NAMES];

Scanner input = new Scanner(System.in);

System.out.println("Enter a name or " + sentinal + " to quit > ");

name = input.nextLine();

while(name.compareTo(sentinal)!=0 && count < NUM_NAMES)

{

System.out.println("Enter birthdate (mm/dd) > ");

birthdate = input.nextLine();

names[count] = name.trim();

birthdates[count] = birthdate.trim();

System.out.println("Enter a name or " + sentinal + " to quit > ");

name = input.nextLine();

++ count;

}

System.out.println(" Count of names is " + count);

System.out.println(" Names are:" + count);

for(int x = 0; x < count; ++x)

System.out.println(names[x]) ;

boolean repeat = true;

boolean found;

while(repeat)

{

found=false;

System.out.println(" Enter a name or " + sentinal + " to quit > ");

name = input.nextLine().trim();

if(name.compareTo(sentinal)==0)

repeat = false;

else

{

for(int x = 0; x < count; ++x)

{

if(names[x].compareTo(name)==0)

{

found =true;

birthdate = birthdates[x];

break;

}

}

if(found)

System.out.println("Birthdate of " + name + " is " + birthdate);

else

System.out.println("Birthdate of " + name + " is not found");

}

}

}

}