2014-09-07 3 views
0

Je veux écrire une application simple en C# qui m'aide à apprendre la saisie tactile. En ce moment je fais la méthode pour comparer des caractères du texte et de l'entrée d'utilisateur. J'ai un problème parce que je fait une méthode pour rechercher des changements de texte:Comparaison des entrées utilisateur

private void tb_write_TextChanged(object sender, TextChangedEventArgs e) 
    { 
     TextBox t =(TextBox)sender; 

     if (Words.WordCompare(tb_text.Text.ToCharArray(), t.Text.ToCharArray())) 
     { 

      l_words.Content =("OK"); 


     } 
     else 
     { 
      l_words.Content = ("Not ok"); 
     } 

    } 

J'ai ma méthode WordCompare:

class Words 
{ 
    public static bool WordCompare(char[] input, char[] output) 
    { 
     List<char> used = new List<char>(); 

     foreach(char ch_out in output) 
     { 
      foreach (char ch_in in input) 
      { 
       if (ch_out == ch_in) 
       { 
        used.Add(ch_in); 
        return true; 
       } 
      } 
     } 
     return false; 
    } 

principal problème est que si l'entrée utilisateur est ok (je veux dire que écrire utilisateur chaque caractère correct) la méthode fonctionne bien, mais elle vérifie seulement le premier caractère, peu importe ce que j'écris alors et retourne toujours vrai. De plus, il retourne vrai quand n'importe quelle lettre du texte et l'entrée de l'utilisateur est la même, non sur quelle position il est. Je voulais ajouter le caractère "used" à la liste pour les suivre, mais il fait une nouvelle liste à chaque fois que la méthode est appelée. Pourriez-vous m'aider avec ce problème, ou peut-être y a-t-il une autre façon de le résoudre?

Répondre

0
class Words 
{ 
    public static bool WordCompare(char[] input, char[] output) 
    { 
     List<char> used = new List<char>(); 
     bool flag = true; 

     if(input.Length!=output.Length) {return false;} 

     for(int i=0;i<input.Length;++i) 
     { 
       if (input[i]==output[i]) 
       { 
        used.Add(ch_in); 
       } 
       else 
       { 
        flag = false; 
        break; 
       } 
     } 
     return flag; 
    } 

En plus de ce que je veux dire est: vous n'avez pas besoin de comparer lorsque le type de chaque personnage, mais il suffit de comparer la chaîne entière en laissant le clic d'un client sur un nouveau bouton, dans lequel un clic événement de bouton juste utiliser votre foreach faire la comparaison.

Questions connexes