Проверял с разными данными: "314.", "314", "3.14". Вывод в консоль отрабатывает на ура, валидатор не принимает по требованию "Программа должна вызывать метод alert с параметром double в случае, если значение параметра obj может быть корректно преобразовано в число типа double." В чём ошибка???
P.s. Ksenia Volkova, пришлось удалить старый вопрос, т.к. не знаю как обновить новый вариант решения. Проверку на "314" и "object" проходит успешно...
package com.javarush.task.task15.task1527;
/*
Парсер реквестов
*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class Solution {
public static void main(String[] args) {
try {
BufferedReader r1 = new BufferedReader(new InputStreamReader(System.in));
String s;
s = r1.readLine();
r1.close();
String[] parts = s.split("[?]");
String s1 = parts[1];
String[] parts2 = s1.split("[&]");
List<String> last = new ArrayList<>();
List<String> obj3 = new ArrayList<>();
double obj;
String obj2 = null;
for (int i = 0; i < parts2.length; i++) {
if (parts2[i].contains("obj=")) {
String[] temp = parts2[i].split("[=]");
last.add(temp[0]);
if (temp.length > 1)
{ obj3.add(temp[1]); }
else continue;
} else if (parts2[i].contains("=")) {
String[] temp = parts2[i].split("[=]");
last.add(temp[0]);
} else {
last.add(parts2[i]);
}
}
for (int x = 0; x < last.size(); x++) {
System.out.print(last.get(x) + " ");
}
System.out.println("");
if (obj3.size() > 0) {
for (int i = 0; i < obj3.size(); i++) {
obj2 = obj3.get(i);
char[] temp666 = obj2.toCharArray();
if (temp666[0] == '.') {
alert(obj2);
} else {
try {
obj = Double.parseDouble(obj2);
if (obj % 1 == 0) {
alert(obj2);
} else alert(obj);
} catch (Exception e) {
alert(obj2);
}
}
}
}
}
catch (Exception e) {
e.printStackTrace();
}
}
public static void alert(double value) {
System.out.println("double: " + value);
}
public static void alert(String value) {
System.out.println("String: " + value);
}
}