1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите проверка аргумента команды на равенство с элементами массива

Тема в разделе "Разработка плагинов для новичков", создана пользователем Zemf4you, 23 фев 2018.

Статус темы:
Закрыта.
  1. Автор темы
    Zemf4you

    Zemf4you Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    zemf4you
    Нужно сделать проверку эквивалентности args[1] на элементы массива rules. Оно, по сути, работает, но если они не равны, то вылетает ошибка null. Проверка на длину rules почему-то не помогает
    Код:
    String rules[] = {"1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7"};
       
               for (int i = 0; !args[1].startsWith(rules[i]) && rules.length != i; i++) {
                   sender.sendMessage("args[1] не совпадает c rules[" + i + "]");
               }
    
     
  2. TorwaldOswarld

    TorwaldOswarld Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    PuxTa4
    if(!args[1].equals(rules)){
    }
    а вообще используй foreach
     
  3. MrMagaChannel

    MrMagaChannel Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mrmagachannel
    Код:
    String[] rules= {"1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7"};
    boolean b = false;
    for (String r : rules) {
        if (r.equals(args[1])) {
            b = true;
            break;
        }
    }
    
    Теперь логическое значение переменной b будет отвечать на твой вопрос.
     
  4. Автор темы
    Zemf4you

    Zemf4you Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    zemf4you
    не работает.
     
  5. MrMagaChannel

    MrMagaChannel Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mrmagachannel
    Он неправильно написал, он сравнивает строку с массивом, юзай мой вариант.
     
  6. AtomicScience

    AtomicScience Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    AtomicScience
    Ее, клуб изобретателей велосипедов!
    Код:
    List rules = Arrays.asList("1.1", "1.2");
    if(!rules.contains(args[1]) {
     System.out.print("args не содержит что-то там");
    }
    
     
  7. Автор темы
    Zemf4you

    Zemf4you Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    zemf4you
    возникла новая проблема.
    Код:
    
    String rules[] = {"1.1", "1.2", "1.3", "1.5", "1.6", "1.7", "2.1", "2.2", "2.3", "2.4", "2.5", "3.2", "3.3", "3.4", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10"};
               
               for (String r : rules) {
                   if (r.equals(args[1])) {
               
                       sender.sendMessage("true");   
                           
                   } else {
                       sender.sendMessage("§cНеверный пункт правила!");
                       return false;
                   }
               }
    
    если в args[1] писать 1.1, то выводит true и то, что после else. Коли же писать что-то другое (даже то, что есть в массиве), то выводит только else.
     
  8. Автор темы
    Zemf4you

    Zemf4you Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    zemf4you
    сча попробую)
     
  9. Автор темы
    Zemf4you

    Zemf4you Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    zemf4you
    кхе-кхе. System.out.print?
    А ещё eclipse не принимает ни List, ни Arrays.
     
  10. Cool_boy

    Cool_boy Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    На что жалуется? Попробуй List<String>.
     
  11. Автор темы
    Zemf4you

    Zemf4you Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    zemf4you
    оу, нет. Забыл из java.util импортировать.
     
  12. MrMagaChannel

    MrMagaChannel Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mrmagachannel
    Омг, тебе цикл проверяет весь массив, а ты при каждой проверке else делаешь, после цикла проверяй:
    Код:
    if (b) {
    //TRUE
    } else {
    //FALSE
    }
    Именно для этого и была введена boolean переменная, а ты ее убрал...
     
  13. Cool_boy

    Cool_boy Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Ну со списком гораздо проще, без костыляний с переменными.
     
  14. MrMagaChannel

    MrMagaChannel Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mrmagachannel
    Список это и есть костыль, массив быстрее обрабатывать
     
  15. AtomicScience

    AtomicScience Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    AtomicScience
    Ага, а еще быстрее будет переписать ядро сервера на ассемблере - прямая работа с процессором ускорит обработку данных
     
  16. MrMagaChannel

    MrMagaChannel Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mrmagachannel
    найс утрируешь
     
  17. AtomicScience

    AtomicScience Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    AtomicScience
    Але, гараж, List это практически то же самое, что и массив, только с кучей удобных методов и фишек. Даже название самого распространенного класса-имплементера, ArrayList, как бы намекает, не?
     
  18. MrMagaChannel

    MrMagaChannel Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mrmagachannel
    Итерация массива в любом случае быстрее. ТС задал список правил через массив, поэтому я и написал через массив. Если получать с конфига например, то естественно удобнее использовать лист.
     
  19. AtomicScience

    AtomicScience Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    AtomicScience
    Неа, итерация LinkedList будет все-таки быстрее. Да и волшебного супер-пупер прироста скорости на 7 элементах не будет

    Короче, с любого профиля использование List'а лучше и универсальнее
     
  20. MrMagaChannel

    MrMagaChannel Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mrmagachannel
    Смотря как задан список правил.
    @Zemf4you тему закрывай.
     
Статус темы:
Закрыта.

Поделиться этой страницей