Вся суть вопроса в заголовке друзья :-)
Любым идеям буду рад!
package com.javarush.task.task15.task1527;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/*
Парсер реквестов
*/
public class Solution {
public static void main(String[] args) throws IOException {
//add your code here
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String s = reader.readLine();
int position = 0;
int position2 = (s.indexOf('?') + 1); //вапшэ круть. За счет этого метода избавился от кучи кода
if (position2 > 0) {
position = position2;
}
String result = s.substring(position); //оставили только кусок строки, отбросив всё, что до "?"
// и знак "?" тоже.
//для примера сюда строку засунул-чтобы смотреть на нее
// http://javarush.ru/alpha/index.html?
// obj=3.14&name=Amigo
String[] params = result.split("&");
Map<String, String> map = new HashMap<String, String>();
for (String param : params)
{
if (param.contains("=")) {
String name = param.split("=")[0];
String value = param.split("=")[1];
System.out.print(name + " ");
map.put(name, value);
} else {
System.out.print(param + " ");
map.put(param, null);
}
}
System.out.println();
for (Map.Entry<String, String> pair : map.entrySet())
{
String name = pair.getKey();
if (name.equals("obj"))
{
String value = pair.getValue();
if (value.matches("-?\\d+(\\.\\d+)?")) {
try {
double d = Double.parseDouble(pair.getValue());
if (d % 1 == 0) {
alert(value);
} else {
alert(d);
}
}
catch (Exception e)
{
}
}
}
}
}
public static void alert(double value) {
System.out.println("double " + value);
}
public static void alert(String value) {
System.out.println("String " + value);
}
}