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

  • 16
  • Недоступна
Считайте с консоли URL-ссылку. Затем выведите на экран через пробел список всех параметров (Параметры идут после ? и разделяются &, например, lvl=15). URL содержит минимум 1 параметр. Если присутствует параметр obj, то передайте его значение в нужный метод alert.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (715)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Алексей Сивенков
Уровень 16, Москва
15 января, 11:38
ппц. поддерживаю вопросы про отсутствие предварительной информации(((
Yevhen
Уровень 17, Харьков, Украина
9 января, 18:39
в задаче во втором пункте 2. Вывести на экран список всех параметров через пробел... оказывает нельзя юзать метод alert(String value), иначе 5-й аксептанс не проходит валидатор: 5. Программа должна вызывать метод alert() с параметром String, если значение параметра obj нельзя корректно преобразовать в число типа double. параметры нужно выводить через sout . Может лучше добавить это в требования? надеюсь никто не будет как я 40 мин гуглить что не так. queryParamsList.forEach( s-> System.out.print(s.split("=")[0] + " ") ); так не пропустит: queryParamsList.forEach(s -> { alert(s.split("=")[0]); }); хотя под капотом в alert(String value) тот же самый System.out.print(value + " ");
Andrey Chuev
Уровень 25, Москва, Russian Federation
8 января, 12:03
Вариатор только через try-catch принимает)
Neonila Kravtcova
Уровень 17, Санкт-Петербург, Россия
25 декабря 2021, 23:26
Да )) Получилось со второй! Через while-substring-if и всё такое.. Пойду удивляться красивому решению JR.. Наверняка у них всё в три строчки )
Nikolay Zerkalov
Уровень 36, Томск
25 декабря 2021, 09:44
Скажите пожалуйста, а где в лекциях были темы о регулярных выражениях? Или я что то пропустил. Две задачи в этом уровне касаются тем которые вообще ни разу не поднимались. И пожалуйста, ну надо говорить мне что я должен научиться гуглить. С таким подходом можно было вообще только задачи давать , а я бы гуглил сидел и делал их. Где в этом (или прошлых ) уровне теория с помощью которой я смогу решить эти задачи так, чтобы это не выглядело как копания кратера детской лопаткой.
Иван Новиков
Уровень 19, Russian Federation
25 декабря 2021, 06:31
Борьба с валидатором, решение через regex не принимает: if (objectURL.matches("\\d+\\.\\d+")) alert(Double.parseDouble(objectURL); А через try catch принимает: try { doubleObj = Double.parseDouble(objectURL); alert(doubleObj);
Максим
Уровень 27, Новосибирск, Россия
23 декабря 2021, 13:58
Условие задачи воспринимаются тяжело, но в целом задача норм. Для себя смотрю готовые решения после решения задач своим способом. Так вот такой вопрос, если мы в url будем писать несколько параметров obj, то он вызовет метод alert() только у последнего. Как я понял, задача должна выводить alert() для всех параметров obj. Если непонятно объяснил, то введите такой url: http://javarush.ru/alpha/index.html?obj=3.14&obj=Amigo Программа выдаст такой ответ: obj obj String: Amigo Хотя, по идее вывод должен быть такой: obj obj double: 3.14 String: Amigo Может ошибаюсь. Тогда принимается критика.
Павел Рязанов
Уровень 35, Казань, Russian Federation
30 декабря 2021, 10:11
У меня выводит как у вас во втором примере, как положено. Я сделал все через работу со строками. 1. Нашел в строке индекс знака "?". Обрезал строку, все что есть до него. 2. Собрал массив строк, разделив строку на подстроки, через метод .split ( "&"); 3. Создал пустой список строк, в который в дальнейшем будут собираться параметры. 4. Работу с первым массивом { если слово содержит "=", значит нужно удалить из него все, что идет после равно, чтобы получить только название параметра. если это название, после удаления "=", равно "obj" то все, что было после равно, закинуть в лист параметров }
for (int i = 0; i < words.length; i++) {
            int end = words[i].indexOf('=');
            if (end > 0){
                char[] chars = new char[end];
                words[i].getChars(0,end,chars,0);
                String subString = new String(chars);
                if (subString.equals("obj")){
                    parameters.add(words[i].substring(end+1));
                }
                words[i] = subString;
5. Через for вывожу массив с названиями параметров. 6. Через for перебираю список со значениями параметров. Делаю через try catch. Иначе валидатор не пропускает. Если получается преобразовать значения параметра в double запускаю метод alert (double value). Если преобразовать нельзя и кинется ошибка, в catch ловлю эту ошибку и вызываю alert (String value);
Elidriel
Уровень 16, Воронеж
14 января, 10:14
можно так же все значения параметров obj в лист положить, а потом по листу форичем пройтись где уже в tru/catch разбить вывод на dooble или String
Sasha Dokuchaev Работает в Andersen
21 декабря 2021, 21:19
Понравилась задача, несмотря на 12 часов ночи 🛌 Решил через split, substring и в конце уже знакомая фишка с parseDouble через блок try-catch В след задачах надо тренить StringBuilder, а то как-то несолидно до сих пор без него справляться😁 P.S. Сергей привет ✋ На 1 задачу сейчас обгоняю тебя😁
Сергей Коваленко
Уровень 29, Краснодар
22 декабря 2021, 18:15
Саша, привет )) 👋 Только рад за тебя 🙂 🤜🤛 А я сейчас курю вот это Ибо split это хорошо, но хочется чего-то более изящного
Teren
Уровень 24, Белгород, Россия
19 декабря 2021, 12:00
Долго решал, решил через большое количество if и цикл while, массивы не применял, только indexOf и substring. Слишком усложнил по сравнению с правильным решением, оно конечно более короткое и лаконичное)
Никита Мельников (MifitoS) Java Developer в Сбер
14 декабря 2021, 12:15
+1 задача, которую не смог решить ... сложно =(