我一直在尝试将文件内容与用户输入进行比较。该程序是从特定文件读取的,它会根据用户的字符串输入检查。我在比较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
中。 - 使变量
username
和password
本地。 - 删除
writeFile()
呼叫,除非每个事件上的附加/写入动态值。