Задача в следующем: необходимо определить ранг указанного в тесте человека. 1 ранг присваивается наибольшему количеству человек (в файле имя Noah будет иметь первый ранг), соответственно чем меньше количество человек, тем больше ранг. Если количество человек повторяется в нескольких строках подряд, то ранг увеличивается.
В тесте указан Mason, выводимый результат должен быть равен 4, по итогу выполнения моего решения результат равен 3. Одно дело, если бы цифры были отсортированы по убыванию, то моё решение было бы рабочим. Но нужно найти решение в данном примере. Прошу помощи в дописании метода по возможности. Буду очень благодарен.
public int getRank (int year, String name, String gender) { FileResource fr = new FileResource("us_babynames_test/yob" + year + "short.csv"); CSVParser parser = fr.getCSVParser(false); int rank = 1; for (CSVRecord rec : parser) { if (rec.get(1).equals(gender)) { if (rec.get(0).equals(name)) { return rank; } rank++; } } return -1; } public void testGetRank () { int year = 2013; String name = "Mason"; String gender = "M"; System.out.println("rank of the name in the file for the given gender: " + getRank (year, name, gender));
Содержимое файла yob2013short.csv :
Sophia,F,10
Emma,F,8
Olivia,F,8
Isabella,F,7
Ava,F,6
Liam,M,9
Jacob,M,8
Mason,M,8
William,M,7
Noah,M,12