获得婴儿名字人气排名计划的排名

时间:2017-12-13 02:23:15

标签: c# console readline ranking

我正在努力让这个程序完成但仍然遇到问题,我无法弄清楚如何获得结果的排名,我一直得到1输出我想要完成这个我会尽快。输出应该如下所示:

输入数据文件的目录路径:C:\ Intel
输入年份:2010年 输入性别(M / F):M
输入名称:Javier

Javier在2010年排名第190位

if

1 个答案:

答案 0 :(得分:0)

您的程序输出太多,因为您正在打印“名称”+名称                             对于每个不匹配的名称,+“未按年份排列”+年“

您需要添加一个标记来记录您是否在查看列表时找到了该名称,如下所示:注意我还添加了break关键字 - 一旦找到了名称,就没有必要了继续寻找。

您还需要从i中减去1到输出,因为您的列表从0开始,我希望您不希望从零开始排名?

class Program
{
    static void Main(string[] args)
    {
        List<string> names = new List<string>();

        string filename = @"c:\temp\baby.txt";
        string year = "1997";
        string gender = "F";
        string name = "Margaret";

        string line = "";
        try
        {
            using (StreamReader fin = new StreamReader(filename))
            {
                while((line = fin.ReadLine()) != null)
                {
                    string[] parsed = line.Split(',');

                    if (parsed[1] == gender)
                    {
                            names.Add(parsed[0]);
                    }
                }
            }

            bool foundName = false;

            for (int i = 0; i < names.Count; i++)
            {
                if (names[i] == (name)) 
                {
                    Console.WriteLine(name + " is ranked #" + i-1 + " in year " + year);
                    foundName = true;
                    break;
                }
            }

            if (!foundName)
            {
                 Console.WriteLine("The name " + name
                        + " is not ranked in year " + year);
            }

        }
        catch(Exception e  )
        {
            Console.WriteLine("The file at {0} could not be read."+ e,  filename);
        }

        for(int c = 0; c < names.Count; c++)
        {
            Console.WriteLine((c + 1) + ". " + names[c]);
        }
        Console.ReadKey();
    }
}

输出:

  

玛格丽特在1997年排名第4   Doris这个名字在1997年没有排名

注意:

  • 您的搜索区分大小写,因此“margaret”
  • 不匹配
  • 您的性别检查也区分大小写,因此“f”找不到匹配项