Как использовать сканер для возврата строки из текстового файла, если строка содержит входные данные сканера? - PullRequest
0 голосов
/ 09 мая 2018

Я хочу сохранить строку из текстового файла в зависимости от того, содержится ли вход со сканера в строке текста.

Однако приведенный ниже код допускает любые формы ввода независимо от того, содержится ли эта запись в текстовом файле, поэтому я предполагаю, что оператор if else полностью игнорируется. Я не уверен, как это исправить, поэтому любые советы приветствуются.

Scanner editScanner = new Scanner(System.in);
String editScannerInput = editScanner.nextLine();
Scanner fileScanner = new Scanner(new File("src/FilmInfo.dat"));
String fileScannerLine = fileScanner.nextLine();


while (fileScanner.hasNext()) {
    if (fileScannerLine.contains(editScannerInput.toLowerCase())) {
        String chosenFilm = fileScanner.nextLine();
        System.out.println(chosenFilm);
    } else {
        System.out.println("Film name is not recognised in your collection, please enter a film name that is in your collection.");
    }
}
}

1 Ответ

0 голосов
/ 10 мая 2018

Если я правильно понимаю проблему, одна проблема с вашим кодом заключается в том, что вы никогда не обновляете переменную fileScannerLine во время зацикливания. Вот фрагмент рабочего кода (с некоторыми незначительными изменениями):

System.out.print("Enter input: ");
Scanner editScanner = new Scanner(System.in);
String editScannerInput = editScanner.nextLine();
System.out.println("");
Scanner fileScanner = new Scanner(new File("src/FilmInfo.dat"));

while (fileScanner.hasNext()) {
    String line = fileScanner.nextLine();
    if (line.contains(editScannerInput.toLowerCase())) {
        String chosenFilm = line;
        System.out.println(chosenFilm);
    } else {
        System.out.println(String.format("The film '%s' is not recognised in your collection, please enter a film name that is in your collection.", line));
    }
}
editScanner.close();
fileScanner.close();

Придуманный тестовый файл:

1
2
3
11
22
33
111
222
333

Выход:

1
The film '2' is not recognised in your collection, please enter a film name that is in your collection.
The film '3' is not recognised in your collection, please enter a film name that is in your collection.
11
The film '22' is not recognised in your collection, please enter a film name that is in your collection.
The film '33' is not recognised in your collection, please enter a film name that is in your collection.
111
The film '222' is not recognised in your collection, please enter a film name that is in your collection.
The film '333' is not recognised in your collection, please enter a film name that is in your collection.

Это решение будет перебирать все строки вашего файла и распечатывать каждое совпадение. Если вы ищете одно совпадение или сохраняете все совпадения в списке, код можно легко изменить для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...