Поиск файла по ключевому слову, затем вывод всего предложения, содержащего ключевое слово

1

Я новичок в программировании на Java, и у меня есть проблема. Моя проблема заключается в том, чтобы не возвращать предложение из текстового файла, возвращается только ключевое слово. Например, я вошел "у кого был хороший день сегодня?" возвращается только "день". Скажем, текстовый файл содержит: "Сегодня у Паулы был хороший день". Моя цель состояла в том, чтобы вернуть "Сегодня у Паулы был хороший день", и вот мой код.

Проблемы связаны с методом parseFile и моим оператором if, где я вызываю parseFile()

 public static void parseFile(String s) throws FileNotFoundException {
    File file = new File("today.txt");

    Scanner scanner = new Scanner(file);
    while (scanner.hasNextLine()) {
        final String lineFromFile = scanner.nextLine();
        if (lineFromFile.contains(s)) {
            // a match!
            System.out.println(s);
            break;
        }


    }
}

   this is my main 


public static void main(String args[]) throws ParseException,
        FileNotFoundException {


    String[] keywords = { "day", "What book", "not going ", "okay"};

    boolean endloop = false;

    boolean found = false;

    Scanner scanner = new Scanner(System.in);
    String input = null;

    System.out.println("What up?");
    do {
        System.out.print(" - ");
        input = scanner.nextLine().toLowerCase();
        for (String keyword: keywords) {
            if (input.contains(keyword)) {
                //System.out.println("Found keyword!"+ keyword);
                // TODO: You can optimize this
                parseFile(keyword);
            }
        }
        if (!found) {
            System.out
                    .println("I am sorry I do not know");
        }

        break;
    }

    while (!input.equalsIgnoreCase("thanks"));
    System.out.println(" Have a good day!");

}

} "today.txt" Содержит у Паулы хороший день. Карла спросила, что такое хорошая книга для чтения.

Любая помощь будет принята с благодарностью

  • 0
    Не читайте код слишком внимательно, но я не вижу, где found когда-либо установлено в true
  • 0
    Это правда, когда вход найден ..
Показать ещё 1 комментарий
Теги:
search

2 ответа

0
Лучший ответ

где вы

final String lineFromFile = scanner.nextLine();
        if (lineFromFile.contains(s)) {
            // a match!
            System.out.println(s);
            break;
        }

вы распечатываете "s", что и есть то, что вы ищете, но вы хотите распечатать строку. который является "lineFromFile", поэтому вы можете захотеть сделать

final String lineFromFile = scanner.nextLine();
        if (lineFromFile.contains(s)) {
            // a match!
            System.out.println(lineFromFile);
            break;
        }
  • 1
    Спасибо, это работает Просто отлично.
0

Вы печатаете s, которое является тем словом, которое используется для поиска. вы должны печатать переменную lineFromfile, поскольку она содержит значение из файла

public static void parseFile(String s) throws FileNotFoundException {
File file = new File("today.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;
    }


}

}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню