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

Быдлокод или нет?

Тема в разделе "Оффтопик", создана пользователем Flumaster, 17 дек 2012.

  1. Автор темы
    Flumaster

    Flumaster Старожил Девелопер Пользователь

    Баллы:
    153
    Skype:
    alexey_aristov
    Да в трай кетч я сую чтобы проще ошибки выглядывать, это дебаг мод. trim() добавил после ошибки. Плагин валюты особой.
     
  2. ensirius

    ensirius Старожил Пользователь

    Баллы:
    123
    Это нормально как бы. В чем собственно трабла то?
     
  3. Автор темы
    Flumaster

    Flumaster Старожил Девелопер Пользователь

    Баллы:
    153
    Skype:
    alexey_aristov
    Мне нужно чтобы из любой строки где есть цифры, выдавались только цифры. В PHP это легко реализуемо.
     
    DavidShabaev нравится это.
  4. Автор темы
    Flumaster

    Flumaster Старожил Девелопер Пользователь

    Баллы:
    153
    Skype:
    alexey_aristov
    Решил траблу так:
    Код:
    Integer value = null;
                    try {value = NumberFormat.getInstance().parse(args[2]).intValue();} catch (Exception e) {
                        value = 0};
    Теперь из любой строки достаются все цифры.
    UPD: но только при условии того, что число стоит первым. Если число последнее то експшн и соответственно value = 0.
     
  5. Автор темы
    Flumaster

    Flumaster Старожил Девелопер Пользователь

    Баллы:
    153
    Skype:
    alexey_aristov
    smilesdc автарка из Дневников Будущего? Няшная :3
     
  6. ensirius

    ensirius Старожил Пользователь

    Баллы:
    123
    Я бы строку в чар кинул и проверял каждую букву/цифру.
     
    slavik123123123 нравится это.
  7. Автор темы
    Flumaster

    Flumaster Старожил Девелопер Пользователь

    Баллы:
    153
    Skype:
    alexey_aristov
    Special for smilesdc.
    В главных ролях: Mr. Try, Mrs. Catch и другие...
     
  8. Автор темы
    Flumaster

    Flumaster Старожил Девелопер Пользователь

    Баллы:
    153
    Skype:
    alexey_aristov
    Да это вообще не так уж и важно. Это указание кол-ва валюты. Нечего буквы там вводить. Я этой строкой чуть-чуть помогаю игроку, если что.
     
  9. Автор темы
    Flumaster

    Flumaster Старожил Девелопер Пользователь

    Баллы:
    153
    Skype:
    alexey_aristov
    К примеру: я иногда когда ентер нажимаю, случайно задеваю "\" или "ъ" - это для таких случаев.
     
  10. ensirius

    ensirius Старожил Пользователь

    Баллы:
    123
    Это лишние. Учитесь писать быстро и эффективно.
     
    ВремяПриключений нравится это.
  11. Автор темы
    Flumaster

    Flumaster Старожил Девелопер Пользователь

    Баллы:
    153
    Skype:
    alexey_aristov
    А иначе так и так експшн. Ведь args массив из стрингов. А я использую args[2] > 0 в условии.
     
  12. ensirius

    ensirius Старожил Пользователь

    Баллы:
    123
    не будет эксепшена.

    Код:
    int page = 0;
     
    try {
        page = Integer.parseInt(args[1]);
    } catch (NumberFormatException e) {
        sender.sendMessage(ChatColor.YELLOW
                + "Страница должна быть числом");
        return;
    }
     
  13. Автор темы
    Flumaster

    Flumaster Старожил Девелопер Пользователь

    Баллы:
    153
    Skype:
    alexey_aristov
    У меня почти так и реализовано, единственное, я все-же пытаюсь избежать ошибки из-за 1-ой буквы.
     
  14. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Регулярками пользоваться не пробовали?
    проверяем на совпадение по паттерну таким образом:
    args[2].matches("[0-9]{1,9}"); // для чисел от 0 до 999999
    args[2].matches("\\-?[0-9]{1,9}"); // для чисел от -999999 до 999999
    args[2].matches("[1-9][0-9]{0,8}"); // для чисел от 1 до 999999
    можно, конечно, и с try..catch. (скорее всего даже быстрее, и уж точно надежнее)

    метод trim() не нужен, ибо при обработке команды входная строка разбивается по пробелам (их нет внутри аргументов)

    если нужно вырезать буквы, то перед этим используем:
    args[2]=args[2].replaceAll("[^0-9]","");
    if(args[2].isEmpty()) { \* циферок не оказалось. ошибка*\ };
     
    ufes и Flumaster нравится это.
  15. ensirius

    ensirius Старожил Пользователь

    Баллы:
    123
    Не полюбились мне регулярки.. Кстати, не забудь длину ограничить. Можно дюпнуть деньги будет иначе))
     
  16. Автор темы
    Flumaster

    Flumaster Старожил Девелопер Пользователь

    Баллы:
    153
    Skype:
    alexey_aristov
    How? Int вообще так и так ограничен, насколько я знаю. Но вот как дюпнуть - не догадываюсь.
     
  17. ensirius

    ensirius Старожил Пользователь

    Баллы:
    123
    Путем переполнения int. Есть специальное число, мне показывали)
     
  18. Автор темы
    Flumaster

    Flumaster Старожил Девелопер Пользователь

    Баллы:
    153
    Skype:
    alexey_aristov
    0_0. 2147483648 это?
     
  19. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Нет никакого специального числа.
    Если конечно, ты не хранишь данные в байтовом массиве или не производишь приведение от Long к Int.
    Парсер не пропустит числа, выходящие за пределы Integer
     
    ВремяПриключений нравится это.
  20. Автор темы
    Flumaster

    Flumaster Старожил Девелопер Пользователь

    Баллы:
    153
    Skype:
    alexey_aristov
    У меня проблема похуже. Я где-то в коде "{" лишнюю поставил.
     

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