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

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!