Не могу найти ошибку, не проходит п.3.
Визуально все работает, пробовал разные URLы, с разными параметрами obj - и отрицательными, и целыми, и с точкой, и стринговые. И несколько параметров obj запихивал, все отрабатывает норм.
Играл с каретками и переносами, добавил дополнительные условия по проверки последнего выводимого параметра...
Но вывод валидатору не нравится.
package com.javarush.task.task15.task1527;
/*
Парсер реквестов
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) {
//add your code here
//создаем буффер для чтения
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
//регулярное выражение на проверку URL
String regExp = "https?://{1}\\w{1,}\\.{1}\\w{2,}.{0,}";
try{
String url = reader.readLine().toLowerCase();
if(url.matches(regExp)){
//получаем все параметры и их значения в массив
String[] paramsAndValues = url.split("\\?|&");
//лист для хранения значений параметров obj
ArrayList<String> objValues = new ArrayList<>();
for(int i = 1; i < paramsAndValues.length; i++){
//получаем массив, где 0 элемент это имя параметра, 1 элемент - значение параметра
String[] param = paramsAndValues[i].split("=");
//вывод имени параметра в строку через пробел
if ( i == paramsAndValues.length - 1){
System.out.println(param[0]);
} else{
System.out.print(param[0] + " ");
}
//проверяем не является ли параметр obj
if (param.length > 1){
if (param[0].equals("obj")){
objValues.add(param[1]);
}
}
}
//выводим все значения параметра obj с помощью функции alert
for (String objValue: objValues){
if (objValue.matches("-?\\d*\\.?\\d*?")){
alert(Double.parseDouble(objValue));
} else {
alert(objValue);
}
}
} else {
reader.close();
System.out.println("URL is broken. Try again");
}
reader.close();
}catch (Exception e){
System.out.println("Something went wrong. Try again later");
e.printStackTrace();
}
}
public static void alert(double value) {
System.out.println("double: " + value);
}
public static void alert(String value) {
System.out.println("String: " + value);
}
}