【发布时间】:2015-04-18 08:51:48
【问题描述】:
我对这个 ArrayList 有点不满。我正在尝试将字符串数组中的一个或多个元素存储到数组列表中,并将其分配给某个字符串变量。我的目标是将关键字存储到一个数组列表中,我可以用它来搜索文本文件。我似乎无法将找到的关键字存储到数组列表中有人可以帮我解决这个问题吗?这是我的代码中的一些 sn-ps。
public static void main(String args[]) throws ParseException, IOException
{
List<String> matches = new ArrayList<String>();
String[] keywords = {"day", "book", "office", "hour",
"date of a test", "number of assignments", "sure",
"current assignment", "due day"};
System.out.println("What would you like to know?");
System.out.print("> ");
input = scanner.nextLine().toLowerCase();
int count = 0;
for (int i = 0; i < keywords.length; i++) {
if (input.contains(keywords[i])) {
matches.add(keywords[i]);
parseFile(keywords[i]);
}
}
}
这是我的 parseFile 方法
public static void parseFile(String s) throws FileNotFoundException {
File file = new File("data.txt");
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine())
{
final String lineFromFile = scanner.nextLine();
if (lineFromFile.contains(s)) {
// a match!
System.out.println(lineFromFile);
// break;
}
}
}
【问题讨论】:
-
有什么问题?请更具体。
-
在您的评论中,您问如何将关键字存储在字符串中 - 您希望字符串具有什么格式?
-
取决于您希望如何格式化
String。您可以使用StringBuilder并在此处附加每个关键字。或者您可以在末尾使用matches.toString()。 -
由于问题还不清楚,这里有一些改进代码的建议:你正在调用 parseFile(keywords[i]);每场比赛。这样,您将打开文件并多次阅读,这是不必要的。一旦你有了完整的匹配列表,你可以将它作为参数提供给 parseFile。另外,当你读完文件后关闭它!最后, contains() 也将匹配子字符串(“booking”包含“book”) - 这是你需要的吗?
标签: java arrays list arraylist