Проблемы с получением команды из пользовательского ввода - PullRequest
0 голосов
/ 09 марта 2020

В настоящее время я борюсь с потоком, который получает введенную команду.

Это выглядит так


final Command command = commands.stream()
        .filter(cmd -> (input.startsWith(cmd.getName()) && (input.length() == cmd.getName().length()
                || input.charAt(cmd.getName().length()) == ' ')))
        .findAny()
        .orElseThrow(() -> new InvalidInputException("unknown command"));

Например, getName () моей команды ExitCommand выглядит так:


@Override
public String getName() {
    return "exit";
}

Поток работает отлично, за исключением того, что он также принимает ввод, такой как «выход». Так что выход плюс пробел. Этого не должно быть, и я не уверен, как это исправить. Это довольно сложно, потому что есть команды длиной в одно, два и три слова. (Например, «выход», «удаление подвижного состава», «список поездов»).

Буду очень признателен, если кто-нибудь сможет мне помочь.

1 Ответ

0 голосов
/ 09 марта 2020

Если всегда есть какой-то ввод, и команда всегда является первым словом перед пробелом или концом ввода, как насчет того, чтобы сначала сделать что-то вроде String inputCommand = input.split(" ")[0];, а затем просто искать это точное значение в вашей коллекции команд.

...