Парсер реквестов

  • 16
  • Недоступна
Считайте с консоли URL-ссылку. Затем выведите на экран через пробел список всех параметров (Параметры идут после ? и разделяются &, например, lvl=15). URL содержит минимум 1 параметр. Если присутствует параметр obj, то передайте его значение в нужный метод alert.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (613)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Александр 17 уровень, Москва
понедельник, 17:45
разобраться помогла вот эта статья https://javarush.ru/groups/posts/2907-metod-split-v-java-delim-stroku-na-chasti
ProgX 16 уровень, Саратов
понедельник, 08:02
Эта зада меня конечно утомила, пытался решить вначале через matcher но нормально сплитнуть не получилось (читал про регулярки целый день), решил через метод split. 1. Выделяю параметры из строки через разделите в первом приближении text.split("\\?|&"); 2. Потом прогоняю их через res[i].split("="); разделяя на ключ значение. 3. Использую ещё один подмассив String[] resSplitObj для того что бы туда выделить obj и его значение. 4. В конце завершаю вызов alert через try. Использую два catch , что бы отследить пустой массив если нет в параметрах obj, этот участок можно отловить и через if. Тут нет не стримов,не лябд, тут все что мы проходили на прошлых уровнях, сам хочу это читерство постичь со временем.
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
   String text = reader.readLine();

    String[] res = text.split("\\?|&");
    String[] resSplitObj = new String[0];

    for (int i = 1; i < res.length; i++) {
        String[] resSplit = res[i].split("=");
        System.out.print(resSplit[0] + " ");
        if (resSplit[0].equals("obj")) {
            resSplitObj = resSplit;
        }
    }
    System.out.println();
    try {
        alert(Double.parseDouble(resSplitObj[1]));
    } catch (ArrayIndexOutOfBoundsException e) {
    }catch (NumberFormatException e) {
        alert(resSplitObj[1]);
    }
}
Виктория 16 уровень
24 октября, 13:49
Не поняла, зачем в условиях написано "(дробные числа разделяются точкой);", если в итоге не нужно было проверять на наличие "." и обычное не дробное число должно выводиться как double. Долго думала, почему не проходит проверку вывод double, пока не порылась в комментариях)
VladOS 18 уровень, Москва
18 октября, 21:37
Полезный совет: Чтобы использовать несколько разделителей в split можно писать такую форму String[] firstSplit = URL.split("[=\\&]"); Где через двойной слеш в квадратных скобках перечисляются символы для сплита
Timas Software Developer
14 октября, 11:49
Задача хороша. Только вот в условии не сказано, то obj может быть несколько. Учтите это. .split("\\?"); ... .split("&"); ... .split("=")
Aleksandr 18 уровень
13 октября, 09:12
одно лишь идиотское условие что класс solution не должен содержать статические поля, значительно усложняет решение
Maxim Belich 18 уровень, Минск
7 октября, 18:30
Решал целый день. Сначала на работе, а потом вечером днём) Прошла с 1 попытки. Вывод задачи: если не знать регулярок (а я их не знаю), то решать очень сложно. Задача учит пользоваться дебаггером. Лишь благодаря ему и решил. + Ко всему узнал класс StringReader (по названию понятно - "читает строки". Именно объект этого класса и принимает конструктор BufferedReader) Мой способ решения: Сначала пытался решать через кучу циклов и ифов с потоком ввода. Понял, что так не получится. Обрезал всю строку до знака "?" (включительно), а все остальные символы кинул в АррэйЛист карл И там уже бегал с бубном вокруг этого всего. Задача однозначно хорошая) Ставлю пять
Future Man 16 уровень
13 октября, 13:25
Так же пошел, все вырезал до ?, потом вложил возможные объекты в лист Затем прошелся по строке и выдрал от в стрки в отдельный лист... затем куча иф и тд. решал так же день примерно... жестко...
Andrey 37 уровень, Москва
24 сентября, 13:42
Строчка теста для тех кто устал закидывать URL в коммандную строку. вдруг пригодиться.
System.setIn(new ByteArrayInputStream("Здесь ваш URL".getBytes()));
Vladimir Shevchenko 17 уровень, Днепр
15 октября, 17:28
Какая командная строка? Че это такое?
Eugene 20 уровень
17 октября, 10:15
эта штука при запуске постоянно отправляет в консоль URL из задачи, чтобы при решении (когда постоянно запускаешь код для проверки) ссылки не вставлять постоянно вручную
Vladimir Shevchenko 17 уровень, Днепр
20 октября, 08:16
Аа понятно, я с телефона в приложении решаю все это дело
Dmitry Vasilyev 18 уровень, Саратов
22 октября, 16:27
Наркоман! Держи наркомана! 😂
Дмитрий 16 уровень, Санкт-Петербург
22 сентября, 05:03
Задача понравилась, спасибо! Решал долго( сначала пробовал вывести через цикл просто, потом через мапу пробовал... в итоге все просто оказалось)) Сначала в цикле вывел список параметров и записал параметры obj со значениями в список. потом вторым циклом по этому списку пробовал значения каждого obj преобразовать в Double и вызывал соответствующий метод alert. вот и все!
Dmitry Kharchenko 24 уровень, Москва
18 сентября, 21:34
Ребят, я начинаю чувствовать, что оооочень многого не догоняю. Решил больше чем за 2 часа, под конец жопа горела так, что мама не горюй... Выложу свой код картинкой.. Если кому не сложно, покидайте свои решения в личку, и, по возможности, объясните, что я сделал коряво и на что лучше надавить в изучении, чтобы подобные задачи решались проще, чем мое недотворчесто. И обращусь к тем, кто только начал ее решать и полезли в обсуждения...НЕ СМОТРИТЕ это решение! Я уверен, что то, что я там наделал - не верный путь. Не закрепляйте ошибок других людей.
Evgeny Siganov 17 уровень, Москва
14 октября, 15:56
да все примерно так и делали включая меня, тут единственное умное решение это сделать через регулярные выражения. Но у меня пока не хватает скила это написать