Я разрабатываю свою собственную оболочку (командную строку). [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");
}
но это утверждение слишком много, если есть тонны командной строки ... так есть ли простой способ его реализовать !?




Если эта java и все команды являются строками, а входной command также является строкой, вы можете упростить то, что вы пытаетесь сделать, создав список допустимых команд и выполнив проверку на наличие.
List<String> validCommands = Arrays.asList("exit", "about", "date");
if (!validCommands.contains(command)) {
System.out.println("invalid command");
}
При этом есть более эффективные способы поддерживать список допустимых команд вне Java-программы, например, файл свойств и загружать список допустимых команд из этого файла. Это сделает вашу программу более удобной в обслуживании.
hist x по-прежнему будет строкой, строка в сочетании с целым числом может быть преобразована в строку
Используйте 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 = история команд)))))
Что, если команда включает в себя целое число, например ... например, если я хочу напечатать предыдущее x количество использованных команд, я буду использовать (hist x), поскольку X указывает целое количество используемых команд .. и hist = история команд