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");
}
}
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.