JavaRush
AI Academy
Акция
Университет
Java FullStack
Python FullStack
AI Native Developer
new
Web FullStack
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема
Вопрос
  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Все вопросы
JavaRush/Помощь по Java задачам/почему не проходит валидатор?
Дмитрий Ковтонюк
19 уровень
  • 01.01.2019
  • 689просмотров
  • 3комментариев

почему не проходит валидатор?

Вопрос по задаче Парсер реквестов
Java Core,  5 уровень,  12 лекция
Решен

Для решения этой задачи тебе нужно:

  1. Считать с консоли URL-ссылку.
  2. Вывести на экран список всех параметров через пробел (Параметры идут после ? и разделяются &, например, lvl=15).
    URL содержит минимум 1 параметр.
    Выводить параметры нужно в той же последовательности, в которой они представлены в URL.
  3. Если присутствует параметр obj, то передать его значение в нужный метод alert():
    • alert(double value) - для чисел (не забывай о том, что число может быть дробным);
    • alert(String value) - для строк.
    Обрати внимание на то, что метод alert() необходимо вызывать после вывода списка всех параметров на экран.
  4. Пример 1

    Ввод:
    http://javarush.ru/alpha/index.html?lvl=15&view&name=Amigo

    Вывод:
    lvl view name

    Пример 2

    Ввод:
    http://javarush.ru/alpha/index.html?obj=3.14&name=Amigo

    Вывод:
    obj name
    double: 3.14

Требования:
  • Программа должна считывать с клавиатуры только одну строку.
  • Класс Solution не должен содержать статические поля.
  • Программа должна выводить данные на экран в соответствии с условием.
  • Программа должна вызывать метод alert() с параметром double, если значение параметра obj можно корректно преобразовать в число типа double.
  • Программа должна вызывать метод alert() с параметром String, если значение параметра obj нельзя корректно преобразовать в число типа double.
....
package com.javarush.task.task15.task1527; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; /* Парсер реквестов */ public class Solution { public static void main(String[] args) throws IOException{ ArrayList<Double> doubleArray= new ArrayList<>(); ArrayList<String> stringArray = new ArrayList<>(); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String text = null; // try{ String s = reader.readLine(); String s1 = s.replaceAll("\\?", ","); String[] values = s1.split(","); String[] particularValues = values[1].split("&"); for (String particularValue : particularValues) { if (particularValue.contains("=")) { String[] value = particularValue.split("="); System.out.print(value[0]+" "); try { double m = Double.parseDouble(value[1]); doubleArray.add(m); } catch (NumberFormatException e) { stringArray.add(String.valueOf(value[1])); } } else { System.out.print(particularValue+" "); } } System.out.println(); for(double d : doubleArray){ alert(d); } for(String d : stringArray){ alert(d); } //add your code here } public static void alert(double value) { System.out.println("double: " + value); } public static void alert(String value) { System.out.println("String: " + value); } }
0
Комментарии (3)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Sergey Moroz
Уровень 26
Expert
1 января 2019, 22:26
1. лишняя логика с проверкой на "=", ибо есть параметры без велью, но их тоже надо выводить 2. из-за этого параметры выводятся не в том порядке, как они идут в урле
0
Дмитрий Ковтонюк
Уровень 19
2 января 2019, 19:30
поменял . ответ тот же
public class Solution {
    public static void main(String[] args) throws IOException{
        ArrayList<Double> doubleArray=  new ArrayList<>();
        ArrayList<String> stringArray = new ArrayList<>();

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String text = null;

        String s = reader.readLine();

        String s1 =   s.replaceAll("\\?", ",");
        String[] values = s1.split(",");

        String[] particularValues =  values[1].split("&");

        for (String particularValue : particularValues) {

                String[] value = particularValue.split("=");
                System.out.print(value[0]+" ");
                if (value.length > 1){
                try {
                    doubleArray.add(Double.parseDouble(value[1]));
                } catch (NumberFormatException e) {
                    stringArray.add(String.valueOf(value[1]));
            }
            }
        }

        System.out.println();
        for(double d : doubleArray){
            alert(d);
        }

        for(String d : stringArray){
            alert(d);
        }
        //add your code here
    }

    public static void alert(double value) {
        System.out.println("double: " + value);
    }

    public static void alert(String value) {
        System.out.println("String: " + value);
    }
}
0
Sergey Moroz
Уровень 26
Expert
2 января 2019, 20:52
при таком подходе alert выполняется для всех параметров, а нужно только для obj hint: вот это не нужно
ArrayList<Double> doubleArray=  new ArrayList<>();
ArrayList<String> stringArray = new ArrayList<>();
и перебирать их тоже не надо
0
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush