Question: Need help with the following program...the code is a bit messy but I need help with the part of the code that requires you to
Need help with the following program...the code is a bit messy but I need help with the part of the code that requires you to display
3 highest ranked names in the specified year that start with the letter of the name the user input
/**
* Write a program that prompts the user to enter the year,
* gender, and followed by a name, and displays the ranking
* of the name for the year.
*/
public class PE01
{
public static void main(String args[])
{
// Create a new Scanner object
Scanner input = new Scanner(System.in);
// Prompt the user to enter year, gender, and name
System.out.println("Enter a year from 2001 to 2010: ");
int year = input.nextInt();
System.out.println("Enter the gender (F or M): ");
String gender = input.next();
System.out.println("Enter the name: ");
String name = input.next();
input.close();
File file = new File("babynameranking" + year + ".txt");
if (!file.exists())
{
System.out.println("No record for " + year);
System.exit(1);
}
int rank = 0;
try
{
Scanner read = new Scanner(file);
while (read.hasNext())
{
String s = read.nextLine();
String[] temp = s.split(" ");
if (gender.equalsIgnoreCase("M") && temp[1].contains(name))
{
rank = new Integer(temp[0]);
}
else if (temp[3].contains(name))
{
rank = new Integer(temp[0]);
}
}
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
if (rank == 0)
{
System.out.println("The name "+name+" is not ranked in year " + year);
File file2 = new File("babynamesranking" + year + ".txt");
try
{
Scanner read = new Scanner(file2);
while (read.hasNext())
{
String line = read.nextLine();
String lineArr[] = line.split(" ");
if (gender == "M")
{
if (lineArr[1].equalsIgnoreCase(String.valueOf(name.charAt(0))))
{
lineArr[0] = "hi";
}
}
if (gender == "F")
{
if (lineArr[3].equalsIgnoreCase(String.valueOf(name.charAt(0))))
{
for(int i = 0; i < 3; i++)
{
lineArr[i] = "hi";
}
}
}
System.out.println("3 highest ranked names in year " +
year + " that start with letter "+ name.charAt(0) +" are: ");
}
read.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
}
else
{
System.out.println(name+" is ranked #"+rank+" in year "+ year);
}
}
}
Enter the year: 2010 Enter the gender: M Enter the name: Javier Javier is ranked #190 in year 2010. Enter the year: 2010 Enter the gender: F Enter the name: Abc The name Abc is not ranked in year 2010. 3 highest ranked names in year 2010 that start with letter A are: Ava, Abigail, and Addison. Enter the year: 2006
Enter the gender: F Enter the name: Universe The name Universe is not ranked in year 2006. 3 highest ranked names in year 2006 that start with letter U are: N/A.
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
