Как сделать проверку на неизвестный аргумент

Ght

Пользователь
Сообщения
157
Решения
11
Писал команду, и в одном классе 4 аргумента
/<cmd> reload
/<cmd> disable
/<cmd> help
/<cmd> enable

Как мне сделать так, что бы если игрок вводил совершенно другой аргумент /<cmd> rload
Игроку выводило мой уже готовый текст о том что данная команда не существует.
 
Решение
Сначала стоит проверить, что этот аргумент вообще есть, можно проверять по args.length > 0.
Далее можно сделать switch case:
Java:
switch (args[0].toLowerCase()) {
  case "reload" -> { /*Code or method*/ }
  case "disable" -> { /*Code or method*/ }
  case "enable" -> { /*Code or method*/ }
  case "help" -> { /*Code or method*/ }
  default -> { /*Твое сообщение о несущ. аргументе*/ }
}
Сначала стоит проверить, что этот аргумент вообще есть, можно проверять по args.length > 0.
Далее можно сделать switch case:
Java:
switch (args[0].toLowerCase()) {
  case "reload" -> { /*Code or method*/ }
  case "disable" -> { /*Code or method*/ }
  case "enable" -> { /*Code or method*/ }
  case "help" -> { /*Code or method*/ }
  default -> { /*Твое сообщение о несущ. аргументе*/ }
}
 
Последнее редактирование:
Сначала стоит проверить, что этот аргумент вообще есть, можно проверять по args.length > 0.
Далее можно сделать switch case:
Код:
switch (args[0].toLowerCase()) {
  case "reload" -> { /*Code or method*/ }
  case "disable" -> { /*Code or method*/ }
  case "enable" -> { /*Code or method*/ }
  case "help" -> { /*Code or method*/ }
  default -> { /*Твое сообщение о несущ. аргументе*/ }
}
Как понять
Сначала стоит проверить, что этот аргумент вообще есть
?
 
В switch case из массива полученных аргументов так или иначе придется брать первый элемент. В случае, если его в этом массиве нет (команда была выполнена без аргументов вовсе), получим ошибку. Поэтому перед тем, как смотреть аргумент, нужно смотреть, есть ли он вообще:
Java:
if (args.length == 0) {
  sender.sendMessage("Нет аргумента");
  return false;
}
 
Java:
if (args.length == 0) {
            String usage = ChatColor.translateAlternateColorCodes('&', Config.getConfig().getString("Usage"));
            p.sendMessage(usage);
            p.playSound(playerLocation, BLOCK_NOTE_BLOCK_BASS, 2, 1);
            return true;
        }
Если ты говоришь про это, оно у меня есть
 
Код:
if (args.length == 0) {
            String usage = ChatColor.translateAlternateColorCodes('&', Config.getConfig().getString("Usage"));
            p.sendMessage(usage);
            p.playSound(playerLocation, BLOCK_NOTE_BLOCK_BASS, 2, 1);
            return true;
        }
Если ты говоришь про это, оно у меня есть
Тогда можно дальше пихать switch case.
 
Тогда можно дальше пихать switch case.
Есть какая-то альтернатива switch case, а то у меня intellij жалуется мол sources 8 а нужен 14. Всё перепробывал, ничего не меняется и не работает.
 
Последнее редактирование модератором:
Есть какая-то альтернатива switch case, а то у меня intellij жалуется мол sources 8 а нужен 14. Всё перепробывал, ничего не меняется и не работает.
Я использую новомодный синтаксис switch case, привык. Скинь полностью то, что пишет IDEA.
Можешь попробовать так:

Java:
switch (args[0].toLowerCase()) {
    case "reload": {
        /*Code or method*/
        break;
    }
    case "disable": {
        /*Code or method*/
        break;
    }
    default: {
        /*Code or method*/
    }
}
 
Я использую новомодный синтаксис switch case, привык. Скинь полностью то, что пишет IDEA.
Можешь попробовать так:

Java:
switch (args[0].toLowerCase()) {
    case "reload": {
        /*Code or method*/
        break;
    }
    case "disable": {
        /*Code or method*/
        break;
    }
    default: {
        /*Code or method*/
    }
}
Вот так получилось, спасибо)
Но у меня появился вопрос, команды которые были созданые до этого и не находяться в switch case, мне их удалять? /<cmd> reload/disable/enable/help
 
Вот так получилось, спасибо)
Но у меня появился вопрос, команды которые были созданые до этого и не находяться в switch case, мне их удалять? /<cmd> reload/disable/enable/help
Не совсем понимаю, о чем речь.
 
Не совсем понимаю, о чем речь.
У меня данные аргументы уже существовали, в таком виде


Java:
if (args[0].equalsIgnoreCase("reload") && p.hasPermission("abh.reload")) {
      String reload = ChatColor.translateAlternateColorCodes('&', Config.getConfig().getString("Reload"));
      conf.reloadConfig(plugin);
      p.playSound(playerLocation, ENTITY_EXPERIENCE_ORB_PICKUP, 2, 1);
      p.sendMessage(reload);
      return true;
}
мне с ними что делать? Удалять?
 
У меня данные аргументы уже существовали, в таком виде


Java:
if (args[0].equalsIgnoreCase("reload") && p.hasPermission("abh.reload")) {
      String reload = ChatColor.translateAlternateColorCodes('&', Config.getConfig().getString("Reload"));
      conf.reloadConfig(plugin);
      p.playSound(playerLocation, ENTITY_EXPERIENCE_ORB_PICKUP, 2, 1);
      p.sendMessage(reload);
      return true;
}
мне с ними что делать? Удалять?
Ну да, теперь вся логика, что находится в блоках if, переедет в switch.
 
Есть какая-то альтернатива switch case, а то у меня intellij жалуется мол sources 8 а нужен 14. Всё перепробывал, ничего не меняется и не работает.
зайди в pom.xml или build.gradle, найди там версию и изменени на 14
 
Будьте осторожны с рекомендациями этого пользователя.
  • Мне нравится (+1)
Реакции: Ght
Назад
Сверху Снизу