繁体   English   中英

使用Stream Writer C#从归档数组创建年度摘要

[英]Creating a yearly summary from a filed Array using Stream Writer c#

因此,我需要创建一个“年度摘要”,以从一年中举办的活动的数量中获得反馈。 每个月必须举行一次活动,以实现此目的。

到目前为止,我已经将月份存储在这样的数组中:

 public string[] sMonths = new string[12] { "01", "02", "03", "04", "05",
                                       "06", "07", "08", "09", "10", "11", "12" };

然后,将数组初始化为带有计数器的组合框:

 for (iCount = 0; iCount < sMonths.Length; iCount++)
        {
            cboMonth.Items.Add(sMonths[iCount]);

        }

然后像这样从界面(Windows窗体)获取此信息:

 sEventName = txtEvent.Text;
        sVenueName = txtVenue.Text;




        lstActivity.Items.Add("Dance");
        lstActivity.Items.Add("Theatre");
        lstActivity.Items.Add("Music");
    }

        //summary




    private void btnExit_Click(object sender, EventArgs e)
    {
        DialogResult dialogResult = MessageBox.Show("Are up you sure you want to exit?", "Exit", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
        if (dialogResult == DialogResult.Yes)
        {
            Application.Exit();
        }

    }

    private void btnAdd_Click(object sender, EventArgs e)
    {
        using (StreamWriter sw = new StreamWriter("EVENTS.TXT", true))
        {


            sw.WriteLine(txtEvent.Text);

            sw.WriteLine(txtVenue.Text);

            sw.WriteLine(cboMonth.SelectedItem.ToString());

            sw.WriteLine(lstActivity.SelectedItem);



            if (rdoRange1.Checked == true)
            {
                sw.WriteLine(rdoRange1.Text);
            }
            else if (rdoRange2.Checked == true)
            {
                sw.WriteLine(rdoRange2.Text);
            }
            else if (rdoRange3.Checked == true)
            {
                sw.WriteLine(rdoRange3.Text);
            }
            else
            {
                sw.WriteLine(rdoRange4.Text);
            }

            sw.Close();
        }






    }

我不确定自己是否正确执行此操作,或者是否混淆了计数器,或者实际上需要使用多个以上的计数器? 但是当我尝试创建摘要时,什么都没有出现?

private void btnSummary_Click(object sender, EventArgs e)
    {
        using (StreamReader sr = new StreamReader("EVENTS.TXT"))
        {
            for (iCount = 12; iCount < sMonths.Length; iCount++)
            {
                if (iCount == 12)
                {
                    sMonths[iCount] = sr.ReadLine();
                    listBox1.Items.Add("You held an event every month of the year.");
                }

                else
                {

                    label1.Text = " ";
                    listBox1.Items.Add("You cannot produce a yearly summary until you have entered an event for each month");
                }




            }

我尝试从文件中读取信息,但它什么也不返回。

我试图让它使用局部变量工作,然后再将其传输到类中。

我的代码中可能有很多错误,这是我的新手。

在此先感谢,任何建议表示赞赏。

更新:

我的读取文件的示例是:

jdisfhs
ddnsojds
05
Dance
0

每个中将有12条记录。 我需要对照变量检查每个值并产生结果。

此块存在一些问题:

for (iCount = 12; iCount < sMonths.Length; iCount++)

sMonths是12个元素的数组,因此sMonths.Length = 12。

您创建的计数器值为12,并且要循环的条件是您的计数器严格低于12,因此您永远不会进入循环。 要遍历数组,通常需要执行以下操作:

for(int iCount = 0; iCount < sMonths.Length; iCount++)

但是在这种情况下,您想读取文件,因此您的循环应在文件读取器上执行以下操作:

private void btnSummary_Click(object sender, EventArgs e)
    {
        using (StreamReader sr = new StreamReader("EVENTS.TXT"))
        {
            string line = string.Empty;
            /*the condition in the while reads the next line and puts it in line, 
               then tests if line is null because sr.ReadLine() 
               returns null when the end of the document is reached*/
            while ((line = sr.ReadLine()) != null) 
            {
                //Do your tests on line
            }
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM