Здравствуйте.
Тестовый пример:
http://javarush.ru/alpha/index.html?lvl=15&view&name=Aobjmigo&obj=3.14&name=&obj=djsdcd&oobj=3.0&obj=1&obj=2.3&obj=aaa
lvl view name obj name obj oobj obj obj obj
double 3.14
String djsdcd
double 1.0
double 2.3
String aaa
Код:
package com.javarush.task.task15.task1527;
import javafx.util.Pair;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
/*
Парсер реквестов
*/
public class Solution {
public static void main(String[] args) throws IOException {
//add your code here
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String inputString = reader.readLine();
//String inputString = "http://javarush.ru/alpha/index.html?lvl=15&view&name=Aobjmigo&obj=3.14&name=&obj=djsdcd&oobj=3.0&obj=1&obj=2.3&obj=aaa";
List<Pair<String, String>> parsedPairsList = Parse(inputString);
for (Pair<String, String> pair: parsedPairsList) {
String key = pair.getKey();
System.out.print(key + " ");
}
System.out.println();
for (Pair<String, String> pair: parsedPairsList) {
String key = pair.getKey();
if (!key.equals("obj"))
continue;
String valueForPrint = pair.getValue();
try {
double d = Double.parseDouble(valueForPrint);
alert(d);
} catch (RuntimeException e) {
alert(valueForPrint);
}
}
}
public static void alert(double value) {
System.out.println("double " + value);
}
public static void alert(String value) {
System.out.println("String " + value);
}
public static List<Pair<String, String>> Parse(String inputString) {
ArrayList<Pair<String, String>> parsedPairsList = new ArrayList<Pair<String, String>>();
try {
URL url = new URL(inputString.toLowerCase());
String urlParameters = url.getQuery();
while (urlParameters.length() > 0) {
// поиск пары ключ-значение;
// найденная пара удаляется из urlParameters
String strPairKeyValue;
int indexSeparatorNextPair = urlParameters.indexOf('&');
if (indexSeparatorNextPair == -1) {
strPairKeyValue = urlParameters;
urlParameters = "";
} else {
strPairKeyValue = urlParameters.substring(0, indexSeparatorNextPair);
urlParameters = urlParameters.substring(indexSeparatorNextPair + 1);
}
// пара ключ-значение найдена
// выделение ключа и значения
int indexSeparatorKeyToValue = strPairKeyValue.indexOf('=');
String key, value = "";
if (indexSeparatorKeyToValue == -1) {
key = strPairKeyValue;
} else {
key = strPairKeyValue.substring(0, indexSeparatorKeyToValue);
value = strPairKeyValue.substring(indexSeparatorKeyToValue + 1);
}
Pair<String, String> pair = new Pair<String, String>(key, value);
parsedPairsList.add(pair);
}
return parsedPairsList;
}
catch (Exception e) {
return parsedPairsList;
}
}
}
package com.javarush.task.task15.task1527;
import javafx.util.Pair;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
/*
Парсер реквестов
*/
public class Solution {
public static void main(String[] args) throws IOException {
//add your code here
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String inputString = reader.readLine();
//String inputString = "http://javarush.ru/alpha/index.html?lvl=15&view&name=Aobjmigo&obj=3.14&name=&obj=djsdcd&oobj=3.0&obj=1&obj=2.3&obj=aaa";
List<Pair<String, String>> parsedPairsList = UrlParametersParser.Parse(inputString);
String valueForPrint = "";
for (Pair<String, String> pair: parsedPairsList) {
String key = pair.getKey();
System.out.print(key + " ");
}
System.out.println();
for (Pair<String, String> pair: parsedPairsList) {
String key = pair.getKey();
if (!key.equals("obj"))
continue;
valueForPrint = pair.getValue();
try {
double d = Double.parseDouble(valueForPrint);
alert(d);
} catch (RuntimeException e) {
alert(valueForPrint);
}
}
}
public static void alert(double value) {
System.out.println("double " + value);
}
public static void alert(String value) {
System.out.println("String " + value);
}
}