2017-05-06 1 views
-1

J'ai essayé de comparer le contenu du fichier avec l'entrée de l'utilisateur. Le programme lit à partir d'un fichier spécifique et vérifie l'entrée de chaîne de l'utilisateur. J'ai du mal à comparer l'ArrayList avec l'entrée de l'utilisateur.Comparaison de ArrayList avec l'entrée utilisateur

btnLoginListener public class implémente Listener {

@Override 
    public void handleEvent(Event arg0) 
    { 

     //variables for the class 
     username = txtUsername.getText(); 
     password = txtPassword.getText(); 

     MessageBox messageBox = new MessageBox(shell, SWT.OK); 

     try { 
      writeFile(); 
      messageBox.setMessage("Success Writing the File!"); 
     } catch (IOException x) 
     { 
      messageBox.setMessage("Something bad happened when writing the file!"); 
     } 

     try { 
      readFile("in.txt"); 

     } catch (IOException x) 
     { 
      messageBox.setMessage("Something bad happened when reading the file!" + x); 
     } 

     if (username.equals(names)) 
     { 
      messageBox.setMessage("Correct"); 
     } 
     else 
     { 
      messageBox.setMessage("Wrong"); 
     }  

     messageBox.open(); 
    } 
} 

private static void readFile(String fileName) throws IOException 
{ 
    //use . to get current directory 
    File dir = new File("."); 
    File fin = new File(dir.getCanonicalPath() + File.separator + fileName); 

    // Construct BufferedReader from FileReader 
    BufferedReader br = new BufferedReader(new FileReader(fin)); 


    String line = null; 
    while ((line = br.readLine()) != null) 
    { 
     Collections.addAll(names, line); 
    }  

    br.close(); 
} 
+1

'J'ai du mal à comparer l'ArrayList avec l'entrée de l'utilisateur. 'Est un peu trop vague. S'il vous plaît expliquer un peu plus et si c'est une exception, partager la trace de la pile –

+0

Pouvez-vous expliquer les noms d'où il vient. –

+0

Quel est le type de noms? Quel est le type de nom d'utilisateur? Je suspecte la liste et la chaîne. Comment une chaîne peut-elle être égale à une liste ? Qu'essayez-vous d'accomplir? Vous devrez définir "comparer" et "vérifier". –

Répondre

0

Je suppose que vous essayez de vérifier si un élément exists dans le list. Si oui, alors vous devez utiliser la méthode contains, here's la Javadoc. Ainsi, au lieu d'utiliser if (username.equals(names)), vous pouvez utiliser if (names.contains(username)).

En dehors de cela, vous devez apporter les modifications suivantes:

  • Ne pas lire le fichier à chaque fois qu'un événement est appelé. Lorsque vous lisez un fichier statique, vous pouvez le lire une fois et le stocker dans un fichier ArrayList.
  • Faites les variables username et password local.
  • Supprimer l'appel writeFile() sauf s'il ajoute/écrit des valeurs dynamiques sur chaque événement.