Я ПОНИМАЮ, ЧТО БУДЕТ СЛОЖНО ЧИТАТЬ, но я хотел сделать юзабельную программу, для дальнейшего использования, но валидатор такой валидатор и пришлось костылировать, каюсь, впредь так делать не буду.
вопрос по этому требованию
Программа должна вызывать метод alert с параметром double в случае, если значение параметра obj может быть корректно преобразовано в число типа double.
изначальный вид регулярки map.get("obj").matches("-?\\d+\\.\\d+")
Уже и в отдельную переменную a перенес, были подозрения, что проблема именно в этом, но нет.
package com.javarush.task.task15.task1527;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.*;
/*
Парсер реквестов
*/
public class Solution {
public static void main(String[] args) throws MalformedURLException {
Scanner scanner = new Scanner(System.in);
URL url = new URL(scanner.nextLine());
Map<String, String> map = new HashMap<>();
List<String> list = new ArrayList<>();
String[] urlSplit = url.getQuery().split("[&]");
for (String i : urlSplit) {
if (i.contains("=")) {
String key = i.substring(0, i.indexOf("="));
String value = i.substring(i.indexOf("=") + 1);
map.put(key, value);
list.add(key);
} else {
map.put(i, "");
list.add(i);
}
}
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i));
if (i + 1 == list.size()) break;
else System.out.print(" ");
}
System.out.println("");
try {
String a = map.get("obj");
if (map.get("obj").matches("\\d+\\.\\d+")) alert(Double.parseDouble(a));
else alert(a);
} catch (Exception ignored) {}
}
public static void alert(double value) {
System.out.println("double: " + value);
}
public static void alert(String value) {
System.out.println("String: " + value);
}
}
Нашел брата