2009-09-15 8 views
0

Je crée une application qui remplit 30 zones de texte avec des valeurs basées sur le résultat d'un nombre de mots.créer une boucle basée sur 30 utilisateurs?

la version finale aura 30 mots, mais cette épreuve ap i ne comprennent que 3 d'entre eux

Comment Wold vous allez de faire cela dans une boucle?

int[] totX = new int[30]; 


    string nav1 = "test1"; 
    string nav2 = "test2"; 
    string nav3 = "test3"; 



    public Form1() 
    { 

     using (StreamReader sr = new StreamReader(@"c:\temp\output.txt")) 
     { 
      var total = 0; 

      while (!sr.EndOfStream) 
      { 
       var counts = sr 
        .ReadLine() 
        .Split('"') 
        .GroupBy(s => s) 
        .Select(g => new { Word = g.Key, Count = g.Count() }); 
       var wc = counts.SingleOrDefault(c => c.Word == nav1); 
       total += (wc == null) ? 0 : wc.Count; 
       totX[0] = total; 
      } 

     } 
     using (StreamReader sr = new StreamReader(@"c:\temp\output.txt")) 
     { 
      var total = 0; 

      while (!sr.EndOfStream) 
      { 
       var counts = sr 
        .ReadLine() 
        .Split('"') 
        .GroupBy(s => s) 
        .Select(g => new { Word = g.Key, Count = g.Count() }); 
       var wc = counts.SingleOrDefault(c => c.Word == nav2); 
       total += (wc == null) ? 0 : wc.Count; 
       totX[1] = total; 
      } 

     } 
     using (StreamReader sr = new StreamReader(@"c:\temp\output.txt")) 
     { 
      var total = 0; 

      while (!sr.EndOfStream) 
      { 
       var counts = sr 
        .ReadLine() 
        .Split('"') 
        .GroupBy(s => s) 
        .Select(g => new { Word = g.Key, Count = g.Count() }); 
       var wc = counts.SingleOrDefault(c => c.Word == nav3); 
       total += (wc == null) ? 0 : wc.Count; 
       totX[2] = total; 
      } 

     } 

     InitializeComponent(); 


    } 

    private void button1_Click_1(object sender, EventArgs e) 
    { 
     textBox1.Text = totX[0].ToString(); 
     textBox2.Text = totX[1].ToString(); 
     textBox3.Text = totX[2].ToString(); 

    } 


} 

}

+0

quel type de fichier, il est? à quoi ressemble le contenu? – shahkalpesh

+0

c'est un long fichier journal ,,, une chaîne cryptique continue avec un "qui sépare les vrais mots" les mots im après sont les noms d'utilisateur dans la chaîne. – Darkmage

Répondre

2

Faire une boucle régulière autour de votre flux et utiliser le compteur comme indice dans votre tableau TOTX. La chaîne de navigation peut également être créée lors de chaque itération.

De même, il n'est vraiment pas nécessaire de lire le même fichier 30 fois, donc je vous suggère de lire le fichier une fois et ensuite d'examiner le contenu si nécessaire.

0

thx Brian a ce travail

int[] totX = new int[3]; 
    string[] navX = new string[] {"test1", "test2", "test3"}; 


    public Form1() 
    { 

     for (int i = 0; i < 3; i++) 
     { 
      using (StreamReader sr = new StreamReader(@"c:\temp\output.txt")) 
      { 

       var total = 0; 

       while (!sr.EndOfStream) 
       { 
        var counts = sr 
         .ReadLine() 
         .Split('"') 
         .GroupBy(s => s) 
         .Select(g => new { Word = g.Key, Count = g.Count() }); 
        var wc = counts.SingleOrDefault(c => c.Word == navX[i]); 
        total += (wc == null) ? 0 : wc.Count; 
        totX[i] = total; 
       } 

      } 
     } 

     InitializeComponent(); 


    } 


    private void button1_Click(object sender, EventArgs e) 
    { 
     textBox1.Text = totX[0].ToString(); 
     textBox2.Text = totX[1].ToString(); 
     textBox3.Text = totX[2].ToString(); 
    } 

} 
Questions connexes