В настоящее время я борюсь с потоком, который получает введенную команду.
Это выглядит так
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";
}
Поток работает отлично, за исключением того, что он также принимает ввод, такой как «выход». Так что выход плюс пробел. Этого не должно быть, и я не уверен, как это исправить. Это довольно сложно, потому что есть команды длиной в одно, два и три слова. (Например, «выход», «удаление подвижного состава», «список поездов»).
Буду очень признателен, если кто-нибудь сможет мне помочь.