При вводе данных из задания
ввод http://javarush.ru/alpha/index.html?lvl=15&view&name=Amigo
вывод lvl view name
ввод http://javarush.ru/alpha/index.html?obj=3.14&name=Amigo
вывод obj name
double 3.14
Соответствует. Но не проходит валидацию.
Если изменить код на подобный, для третьего пункта
String[] array = reverseConvert.split("[^\\w.]+");
String value;
for (int i = 0; i < array.length ; i++) {
value = array[i];
try {
Double result = Double.parseDouble(value);
alert(result);
} catch (Exception e) {
}
}
}
то все-равно не проходит по второму.
И собстно я в тупике, примеры из задания обрабатывает корректно.
Так же возник вопрос. Мы можем парсировать число 15 в double. Но в первом примере на выводе его нет (15.0 или 1.0 и 5.0), исходя из логики второго вывода из условия мы не должны разбивать число 1 и 5 на два отдельных. Т.е парсировать мы должны только число, которое изначально содержит "."
Далее. Подумал может быть ему требуется номинальное парсирования всех чисел в дробь, но чтобы соответствовало выводу первого и второго примера.
т.е число 15 парсируется, но не выводится. Тогда соблюдаются условия вывода из первого примера и из второго
String[] array = reverseConvert.split("[^\\w.]+");
String value;
for (int i = 0; i < array.length ; i++) {
value = array[i];
if (!value.contains(".")) {
try {
Double result1 = Double.parseDouble(value);
} catch (Exception e) {
}
} else {
try {
Double result = Double.parseDouble(value);
alert(result);
} catch (Exception e) {
}
}
}
как ожидаемый результат, - отвалился 3 пункт валидации.
package com.javarush.task.task15.task1527;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Arrays;
/*
Парсер реквестов
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String url = reader.readLine();
reader.close();
URL addurl = new URL(url);
String reverseConvert = addurl.getQuery();
String param = reverseConvert.replaceAll("(=.+?&)|=.*|&"," ");
alert(param);
String[] array = reverseConvert.split("[^\\w.]+");
String value;
for (int i = 0; i < array.length ; i++) {
value = array[i];
if (!value.contains(".")) {
try {
Double result1 = Double.parseDouble(value);
} catch (Exception e) {
}
} else {
try {
Double result = Double.parseDouble(value);
alert(result);
} catch (Exception e) {
}
}
}
}
public static void alert ( double value){
System.out.println("double " + value);
}
public static void alert (String value){
System.out.println("String " + value);
}
}