Просить пользователя ввести действительную команду в java

Я разрабатываю свою собственную оболочку (командную строку). [When
пользователь вводит встроенную команду, оболочка должна найти и выполнить соответствующий код соответственно.]

Я создал свой код, используя разделение команд и параметры команд, чтобы хранить свои команды. но меня смущает одна вещь: создание команды, которой нет в списке. Я думаю об использовании оператора if для печати недопустимого комментария (например)

if (command! = "exit")||(command! = "about")||(command! = "date")||(command! = "time")||(command! = "hist")||(command! = "notepad")
                    ||(command! = "")||(command! = "hist -h")||(command! = "hist -l")||(command! = "c"){

System.out.println("invalid command");
}

но это утверждение слишком много, если есть тонны командной строки ... так есть ли простой способ его реализовать !?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
131
2

Ответы 2

Если эта java и все команды являются строками, а входной command также является строкой, вы можете упростить то, что вы пытаетесь сделать, создав список допустимых команд и выполнив проверку на наличие.

List<String> validCommands = Arrays.asList("exit", "about", "date");
if (!validCommands.contains(command)) {
    System.out.println("invalid command");
}

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

Что, если команда включает в себя целое число, например ... например, если я хочу напечатать предыдущее x количество использованных команд, я буду использовать (hist x), поскольку X указывает целое количество используемых команд .. и hist = история команд

Hans Hong 02.05.2018 20:03
hist x по-прежнему будет строкой, строка в сочетании с целым числом может быть преобразована в строку
Dhawal Kapil 03.05.2018 07:15

Используйте Map<String, Command>, чтобы отслеживать доступные команды. Если команды нет на карте, значит, она недействительна. Например:

public class Shell {
    private final Map<String, Command> supportedCommands;

    public Shell(Map<String, Command> supportedCommands) {
        this.supportedCommands = supportedCommands;
    }

    public void execute(String command, String[] args) {
        Command c = supportedCommands.get(command);
        if (c == null) {
            System.out.println("invalid command");
        } else {
            c.execute(args);
        }
    }


    public interface Command {
        public void execute(String[] args);
    }

}

та же проблема, что и решение выше (((((Что, если команда включает целое число, например ... например, если я хочу напечатать предыдущее x количество использованных команд, я буду использовать (hist x), поскольку X указывает целое количество используемых команд .. и hist = история команд)))))

Hans Hong 02.05.2018 20:08

Другие вопросы по теме