我在尝试创建一个方法时遇到问题,该方法在文本文件中搜索String数组中的两个或多个匹配单词,然后使用匹配的关键字打印出找到的句子。在某些情况下,如果用户只输入一个匹配的关键字,则该方法可以打印出该句子。如果用户输入两个匹配的单词,则打印具有这两个匹配单词的句子。我的问题是返回两个或多个找到的匹配关键字。到目前为止,我只能用一个关键字搜索文本文件。所以,例如,如果我的文本文件包含“地面是你左边门”和“地面在这里”。然后用户进入“地面门”,返回“地面在你左边的门旁边”,“地面在这里”的句子。我的目标是只返回“你左边的门旁边的地面”。我的匹配单词是
String [ ] matchwords = {"ground","level","Back", "toll","chair"};
这是我搜索文本文件的搜索方法。
public static void SearchFile(String go) throws FileNotFoundException {
File file = new File("bingo.txt");
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine())
{
final String fileline = scanner.nextLine();
if (fileline.contains(go)) {
System.out.println(fileline);
}
}
}
在我的主要方法中,我调用SearchFile函数就在这里。
public static void main(String args[]) throws ParseException, IOException {
/* Initialization */
String [ ] matchwords = {"ground","level","Back", "toll","chair"};
Scanner in = new Scanner(System.in);
Scanner scanner = new Scanner(System.in);
String input = null;
System.out.println("Welcome To the DataBase ");
System.out.println("What would you like to know?");
System.out.print("> ");
input = scanner.nextLine().toLowerCase();
boolean match = true;
for (int i = 0; i < matchwords.length && match; i++) {
//match = input.contains(matchwords[i]);
if (input.contains(matchwords[i])) {
SearchFile(matchwords[i]);
}
}
}
有什么建议吗?
答案 0 :(得分:0)
static String [ ] matchwords = {"ground","level","Back", "toll","chair"};
static List wordList = Arrays.asList(matchwords);
public static void main(String []stg){
Scanner console = new Scanner(System.in);
String input = console.nextLine().toLowerCase();
List line = Arrays.asList(input.split(" "));
int noOfWords =0;
noOfWords = checkWord(line, noOfWords);
System.out.println("Matched words in a single line : "+noOfWords);
}
public static int checkWord(List list, int counter){
for(int i=0;i<list.size();i++)
if(wordList.contains(list.get(i))){
list.remove(i);
checkWord(list, counter);
counter++;
}
return counter;
}
答案 1 :(得分:-1)
我会反转循环顺序。遍历文件并在每一行上查找适当数量的匹配单词。然后在有足够的匹配后立即打印该行。你编写这个代码的方式,你必须为每个可能的匹配单词遍历每个文件一次,然后关联结果以找到那些将按最小匹配数打印的行