Парсер реквестов
Считать с консоли URL-ссылку.
Вывести на экран через пробел список всех параметров (Параметры идут после ? и разделяются &, например, lvl=15).
URL содержит минимум 1 параметр.
Если присутствует параметр obj, то передать его значение в нужный метод alert.
alert(double value) — для чисел (дробные числа разделяются точкой)
alert(String value) — для строк
Обрати внимание на то, что метод alert необходимо вызывать ПОСЛЕ вывода списка всех параметров на экран.
Пример 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
Требования:
1. Программа должна считывать с клавиатуры только одну строку.
2. Программа должна выводить данные на экран в соответствии с условием.
3. Программа должна вызывать метод alert с параметром double в случае, если значение параметра obj может быть корректно преобразовано в число типа double.
4. Программа должна вызывать метод alert с параметром String в случае, если значение параметра obj НЕ может быть корректно преобразовано в число типа double.
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 Exception {
//add your code here
String url;
String params;
String tmp;
int ind;
ArrayList<String> objParams = new ArrayList<>();
String [] arrParams;
BufferedReader br;
br = new BufferedReader(new InputStreamReader(System.in));
url = br.readLine();//считали с консоли url ссылку
ind = url.indexOf('?');//получили индекс ?-знака
params = url.substring(ind+1,url.length());//забираем параметры из стринга
arrParams = params.split("&");//складываем параметры в массив
for (String s:arrParams){//перебираем массив параметров
ind = s.indexOf("=");//ищем знак равенства в параметре
if(ind>0) {//если параметр содержит знак =
tmp = s.substring(0, ind);//забираем имя до знака
System.out.print(tmp + " ");//печатаем в консоль
if (tmp.contains("obj"))//если имя содержит obj
objParams.add(s.substring(ind + 1));//заносим его параметр в аррайлист
}
else
System.out.print(s + " ");//если нет знака равенства печатаем в консоль целиком
}
System.out.println();
for (String v: objParams){
if(v.contains(".")){//если параметр содержит точку
try {
alert(Double.parseDouble(v));//пробуем его конвертировать в дабл и, если успешно - печатаем в консоль
}catch (NumberFormatException e){
alert(v);//при невозможности конвертации печатаем как стринг
}
}
}
}
public static void alert(double value) {
System.out.println("double " + value);
}
public static void alert(String value) {
System.out.println("String " + value);
}
}
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 Exception {
//add your code here
String url;
String params;
String tmp;
int ind;
ArrayList<String> objParams = new ArrayList<>();
String [] arrParams;
BufferedReader br;
br = new BufferedReader(new InputStreamReader(System.in));
url = br.readLine();//получили url
ind = url.indexOf('?');//получили индекс ?-знака
params = url.substring(ind+1,url.length());//забираем параметры из стринга
arrParams = params.split("&");//складываем параметры в массив
for (String s:arrParams){//перебираем массив параметров
ind = s.indexOf("=");//ищем знак равенства в параметре
if(ind>0) {//если параметр содержит знак =
tmp = s.substring(0, ind);//забираем имя до знака
System.out.print(tmp + " ");//печатаем в консоль
if (tmp.contains("obj"))//если имя содержит obj
objParams.add(s.substring(ind + 1));//заносим его параметр в аррайлист
}
else
System.out.print(s + " ");//если нет знака равенства печатаем в консоль целиком
}
System.out.println();
for (String v: objParams){
if(v.contains(".")){//если параметр содержит точку
try {
alert(Double.parseDouble(v));//пробуем его конвертировать в дабл и, если успешно - печатаем в консоль
}catch (NumberFormatException e){
alert(v);//при невозможности конвертации печатаем как стринг
}
}
}
}
public static void alert(double value) {
System.out.println("double " + value);
}
public static void alert(String value) {
System.out.println("String " + value);
}
}