Привет всем!
Результат выдается правильный, однако валидатор не принимает.
Подскажите пожалуйста, что делаю не так.
Спасибо!
package com.javarush.task.task15.task1527;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Map;
import java.util.Scanner;
import java.util.stream.Collectors;
/*
Парсер реквестов
*/
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String url = sc.nextLine();
sc.close();
String paramString = url.substring(url.indexOf("?") + 1);
// Парсим строку и засовываем её в мапу
Map<String, String> params = getParamMapFromString(paramString);
// Печатаем названия параметров
printKeys(params);
params.forEach((key, value) -> { // для каждой пары ключ-значения в мапе
if ("obj".equals(key)) {
try {
alert(Double.parseDouble(value));
return;
} catch (Exception ignored) {
}
alert(value);
}
});
}
private static Map<String, String> getParamMapFromString(String paramString) {
return Arrays.stream(
paramString.split("&"))// Сплиттим строку в массив по параметрам
.collect(Collectors.toMap( //Превращаем в мапу
(String o) -> o.contains("=") ? o.substring(0, o.indexOf("=")) : o, // парсим строку в поисках ключа
(String o) -> o.contains("=") ? o.substring(o.indexOf("=") + 1, o.length()) : "", // и в поисках значения
(o1, o2) -> o2 // на слущай двух одинаковых ключей берем значение последнего
));
}
private static void printKeys(Map<String, String> params) {
System.out.println(params.keySet().stream().collect(Collectors.joining(" ")));
}
public static void alert(double value) {
System.out.println("double " + value);
}
public static void alert(String value) {
System.out.println("String " + value);
}
}