когда проверяю вариант:
String httpStr = reader.readLine();
валидатор выдает ошибку времени выполнения
если String httpStr = "http://javarush.ru/alpha/index.html?obj=34&view&name=Amigo&obj=лоло";
выводит:
obj view name obj
double: 34.0
String: лоло
но валидатор не пропускает 1 и 3 пункт
если String httpStr = "http://javarush.ru/alpha/index.html?obj=3.14&name=Amigo";
выводит:
obj name
double: 3.14
но валидатор не пропускает по 1, 3 и 5 пункту
Что не так с 1-м?
Почему 5? вообще не понимаю
package com.javarush.task.task15.task1527;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Map;
/*
Парсер реквестов
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
// String httpStr = reader.readLine();
// String httpStr = "http://javarush.ru/alpha/index.html?obj=34&view&name=Amigo&obj=лоло";
String httpStr = "http://javarush.ru/alpha/index.html?obj=3.14&name=Amigo";
int index = httpStr.indexOf('?');
String strOst = httpStr.substring(index + 1); // в strOst строка после "?"
ArrayList<String> list = new ArrayList();
ArrayList<String> listDlyaAlert = new ArrayList<>();
while (true) {
if (strOst.contains("&")) {
index = strOst.indexOf('&');
String srtPara = strOst.substring(0, index); // получили строку до 1-го "&"
list.add(srtPara); // добавляем её в list
strOst = strOst.substring(index + 1); // теперь strOst остаток строчи после "&"
if (!(strOst.contains("&"))) { // если больше нет "&" в strOst
list.add(strOst); // тогда закидываем в list
break;
}
}
}
for (String para : list) {
index = para.indexOf('=');
if (index == -1) { // если в полученной строке нет "=", то index будет -1, выводим параметр
System.out.print(para);
System.out.print(" ");
} else if (index > -1) { // иначе есть, выводим параметр
System.out.print(para.substring(0, index));
System.out.print(" ");
if (para.contains("obj")) { // если в этой строке есть "obj"
listDlyaAlert.add(para.substring(index + 1)); // добавляем в listDlyaAlert строку после "="
}
}
}
System.out.println();
for (int i = 0; i < listDlyaAlert.size(); i++) {
try {
Double d = Double.parseDouble(listDlyaAlert.get(i)); // 4. в случае, если значение параметра obj может быть корректно преобразовано в число типа double
alert(d); // вызываем метод alert с параметром double
} catch (NumberFormatException e) { // не может преобразоваться - вызываем alert с параметром String
alert(listDlyaAlert.get(i));
}
}
}
public static void alert(double value) {
System.out.println("double: " + value);
}
public static void alert(String value) {
System.out.println("String: " + value);
}
}