Я новичок в программировании на 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" Содержит у Паулы хороший день. Карла спросила, что такое хорошая книга для чтения.
Любая помощь будет принята с благодарностью
где вы
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;
}
Вы печатаете 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;
}
}
}
found
когда-либо установлено вtrue