Я пишу небольшую программу, которая позволяет пользователю запрашивать базу данных, содержащую сведения об учетной записи. База данных - это простой текстовый файл. Проблема, которая у меня есть, заключается в том, что моя функция, которая предположит, чтобы увидеть, содержит ли строка ключевые слова, иногда приводит к дублированию результатов.Java String.contains() производит повторяющиеся результаты
Вот мой код:
public void actionPerformed(ActionEvent arg0) {
// Clear the text area.
textAreaRecords.setText("");
String keyword;
String[] keywords;
String[] parts;
String line;
String record = "";
boolean recordFound = false;
// Get keywords from field.
keyword = textFieldKeywords.getText();
keywords = keyword.split(" ");
// Open the file and read form it.
try {
FileReader fReader = new FileReader("Passwords.txt");
BufferedReader reader = new BufferedReader(fReader);
while((line = reader.readLine()) != null) {
parts = line.split("\t");
for(int i = 0; i < keywords.length; i++) {
if(parts[0].contains(keywords[i]))
recordFound = true;
}
if(recordFound) {
if(parts.length == 5)
record += parts[0] + "\t" + parts[1] + "\t" + parts[2] + "\t" + parts[3] + "\t" + parts[4] + "\n";
else
record += parts[0] + "\t" + parts[1] + "\t" + parts[2] + "\t" + parts[3] + "\n";
textAreaRecords.append("Account \t Username \t Password \t Email \t Notes\n\n");
textAreaRecords.append(record);
}
}
}catch(Exception e) {
e.printStackTrace();
}
}
Пример дублированных результатов ...
База данных содержит:
BT username password email someOtherNotes Gmail username password email someOtherNotes Gmail OtherGmail password email notes
Ключевые слова при условии: Gmail
Результаты программы:
BT username password email someOtherNotes Gmail username password email someOtherNotes
Что случилось и как его исправить?
Спасибо за ваш совет. Это устранило мою проблему. Я посмотрю и на другие вещи. – user4155352