По String корректно отрабатывает, решение масштабируемое, от null есть защита. Куда смотреть?
package com.javarush.task.task15.task1527;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/*
Парсер реквестов
*/

public class Solution {
    public static void main(String[] args) throws IOException {
        Map<String,String> hashmap = new HashMap<>();
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String url = reader.readLine();
        Pattern pattern = Pattern.compile("\\?.+$");
        Matcher matcher = pattern.matcher(url);
        while(matcher.find()){
            String substring = url.substring(matcher.start() + 1, matcher.end());
            String[] ampersandChar = substring.split("&");
            for (String ampersands: ampersandChar
                 ) {
                String[] equalChar = ampersands.split("=");
                hashmap.put(equalChar[0], equalChar[equalChar.length -1]);
            }
            for(Map.Entry<String ,String> entry: hashmap.entrySet()){
                System.out.printf("%s ", entry.getKey());
            }
            System.out.println();
            if(hashmap.containsKey("obj")){
                try{
                    alert(Double.parseDouble(hashmap.get("obj")));
                } catch (NumberFormatException e){
                    alert(hashmap.get("obj"));
                }
            }
        }
        //напишите тут ваш код
    }

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

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


}