我的代码没有提供所需的输出

时间:2013-08-09 21:20:48

标签: c#

我的文本文件包含以下信息

   Names                     Date Of Birth        Date Of Joining   
   Bella Swan                01/18/1986           12/12/2012
   Edward Cullen             10/13/1983           05/08/2013
   Jacob Black               10/18/1981           12/12/2012
   Carlisle Cullen           05/08/1953           12/16/1998
   Alice Cullen              01/18/1986           09/09/2009

如果用户输入日期,则应提取与日期相关的所有记录。 用户输入日期01/18/1986 显示屏显示以下详细信息:

      Bella Swan                01/18/1986           12/12/2012
      Alice Cullen              01/18/1986           09/09/2009

如果用户输入日期12/12/2012

       Bella Swan                01/18/1986           12/12/2012
       Jacob Black               10/18/1981           12/12/2012

我需要遵守的准则是不使用锯齿状数组,linq,List,Exception等。

我不知道如何获得上述输出。 我试过了,但它没有用。

static void Main()
{
    Console.WriteLine("Enter The Date");
    string Date = Console.ReadLine();
    string line = null;
    FileStream fs = new FileStream("Scheduler.txt", FileMode.Open,FileAccess.Read);
    StreamReader reader = new StreamReader(fs);
    {
        while ((line = reader.ReadLine()) != null)
        {
            if (line.Contains(Date))
            {   
                Console.WriteLine(Date);
                break; // then stop
            }
        }
    }
}  

1 个答案:

答案 0 :(得分:3)

你为什么这样做?

Console.WriteLine(Date);

您需要打印整行:

Console.WriteLine(line);

你为什么这样做?

break; // then stop

在你阅读整个文件之前,你过早地停止了;将其删除,以便继续循环,直到到达文件末尾。

其他可能的问题:您是否检查过以确保您的输入实际上是有效日期?一种方式是这样的:

DateTime valid; 
if(!DateTime.TryParse(Date, "MM/dd/YYYY", CultureInfo.InvariantCulture)) {
    // handle invalid date format
}

除此之外,这实际上是一个非常好的开始。你的方法正确。

然而,你提出的问题非常严重。下一次,说明您遇到的实际具体问题。您甚至可能会发现,阐明问题将有助于您更好地理解自己的代码,以便您自己找到错误。例如,如果你说过:

  

我有这段代码,但它只打印用户输入的日期然后停止....

可能会查看你的代码,并想知道为什么会这样。然后你可能已经注意到你有Console.WriteLine(Date)而且已经哈哈了!也许,也许,就像break一样。