将ArrayList与用户输入进行比较



我一直在尝试将文件内容与用户输入进行比较。该程序是从特定文件读取的,它会根据用户的字符串输入检查。我在比较ArrayList与用户输入时遇到困难。

公共类BTNLoginListener实现听众 {

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

我假设您正在尝试检查list中的元素exists。如果是,那么您需要使用contains方法,这是Javadoc。

因此,您可以使用if (names.contains(username))

而不是使用if (username.equals(names))

除此之外,您应该进行以下更改:

  • 每次调用事件时,请勿读取文件。当您阅读静态文件时,您可以阅读一次并将其存储在ArrayList中。
  • 使变量usernamepassword本地。
  • 删除 writeFile()呼叫,除非每个事件上的附加/写入动态值。

相关内容

  • 没有找到相关文章

最新更新