2017-03-23 5 views
0

したがって、年に開催されるイベントの量からフィードバックを得るYearly Summaryを作成する必要があります。これが起こるには、毎月開催されるイベントが必要です。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]); 

     } 

が続いからこの情報を取ります

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(); 
     } 






    } 

これを正しく実行しているかどうかわからない、または私のカウンターが混乱してしまったり、1以上のものを使う必要があるのであれば?しかし、その後、要約を作成しようとすると、何も表示されません。

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"); 
       } 




      } 

私はファイルから情報を読み取ろうとしますが、何も返されません。

私はこれをクラスに転送する前に、ローカル変数を使って動作させようとしています。

私のコードには多くのエラーがあるかもしれませんが、私はこれに新しいです。

ありがとうございました。ありがとうございました。

UPDATE:

私のReadFileのサンプルは次のとおりです。

jdisfhs 
ddnsojds 
05 
Dance 
0 

それらのそれぞれに12件の記録があります。私は変数ごとに各値をチェックし、結果を生成する必要があります。

+0

読み取りファイルのサンプルを投稿します。 – jdweng

+0

@jdwengが追加されたばかりです – Lorna

+0

毎月読んで5行、12ヶ月で12 * 5 = 60行読む必要があります。 forループは、60行を読み込むように正しく設計されていません。 – jdweng

答えて

0

このチャンクを持ついくつかの問題があります:あなたが値12とにあなたの状態とあなたのカウンターを作成= 12

sMonths.Lengthよう

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

sMonthsは12個の要素の配列でありますループは、あなたのカウンターが厳密に12より劣っているので、ループに入ることはありません。あなたが通常のような何かをしたい配列をループし :

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 
      } 
     } 
    } 
for(int iCount = 0; iCount < sMonths.Length; iCount++) 

しかし、この場合には、あなたのループはそのような何かにファイルリーダーにする必要がありますので、ファイルを読みたい

関連する問題