Помогите по теме, коллеги, красную строку уже куда только не переносил, пробел в конце вывода имен параметров тоже исключил - как об стенку горох!!!
Сэкономил время того, кто решит мне помочь и написал комментарии на каждое действие, наведите на путь истинный, братцы!!!
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.*;
/*
Парсер реквестов
http://javarush.ru/alpha/index.html?lvl=15&view&name=Amigo
http://javarush.ru/alpha/index.html?obj=3.14&name=Amigo
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); //считываем с клавы строку
URL myURL = new URL(bufferedReader.readLine()); // делаем из нее URL
String[] Pairs = myURL.getQuery().split("&"); //загоняем в массив все, что после "?" и между "&"
LinkedHashMap<String, String> hashMap = new LinkedHashMap<>(); //упорядоченная коллекция параметров и значений
for (int i = 0; i < Pairs.length; i++) { //идем по всему массиву
String[] parametersTemp = Pairs[i].toString().split("="); // и нарезаем во временный масиив все, где есть "="
if (parametersTemp.length > 1) // если знак "=" был и есть кроме параметра еще и его значние
hashMap.put(parametersTemp[0], parametersTemp[1]); //записваем пару параметр и значение в коллекцию
else
hashMap.put(parametersTemp[0], null); // иначе пишем только параметр, значение делаем пустым
}
int i = 0; // переменная для удаления последнего пробела (думал, что поможет при валидации)
for (Map.Entry<String, String> me : hashMap.entrySet()) {
System.out.print(me.getKey()); // выводим имя параметра
i++;
if (i != hashMap.size()) System.out.print(" "); // и если он не последний, то херачим еще и пробел
}
for (Map.Entry<String, String> me : hashMap.entrySet()) { //пробегаясь снова по коллекции
if (me.getKey().equals("obj")) { //ищем, есть ли параметр с именем "obj", если есть, то
System.out.println();
try {
alert(Double.parseDouble(me.getValue())); //пробуем конвертнуть в дабл и вызвать соответствующий алерт
} catch (NumberFormatException e) { //если не получилось
alert(me.getValue()); // вызываем алерт со строковым полем
}
}
}
}
// И ЧЕГО НЕ НРАВИТСЯ ВАЛИДАТОРУ ?????????????
public static void alert(double value) {
System.out.println("double " + value);
}
public static void alert(String value) {
System.out.println("String " + value);
}
}
/* а это мой велосипед, который работает на ура, но валидатор - редиска!
/*List<String> parameterList = new ArrayList<>();
List<String> valueList = new ArrayList<>();
String string;
char[] chars;
String s = "";
String v = "";
int i;
boolean itWasAmpersant;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
string = bufferedReader.readLine();
chars = string.toCharArray();
List<Integer> znak_vopros = new ArrayList<>();
List<Integer> znak_ampersant = new ArrayList<>();
List<Integer> znak_ravno = new ArrayList<>();
for (int c = 0; c < chars.length; c++) {
if (chars[c] == '?') znak_vopros.add(c);
if (chars[c] == '&') znak_ampersant.add(c);
if (chars[c] == '=') znak_ravno.add(c);
}
i = znak_vopros.get(0) + 1;
itWasAmpersant = true;
while (i < chars.length) {
while (chars[i] != '=' & chars[i] != '&') {
s = s + chars[i];
v = v + chars[i];
if (i == chars.length - 1) break;
i++;
}
if (itWasAmpersant & chars[i] == '&') {
v = "null";
valueList.add(v);
parameterList.add(s);
s = "";
itWasAmpersant = true;
}
if (itWasAmpersant & chars[i] == '=') {
parameterList.add(s);
i++;
v = "";
s = "";
itWasAmpersant = false;
} else {
if (!itWasAmpersant) valueList.add(v);
else if (i == chars.length - 1) {
valueList.add("null");
parameterList.add(s);
}
i++;
s = "";
v = "";
itWasAmpersant = true;
}
}
System.out.println();
for (int j = 0; j < parameterList.size(); j++) {
System.out.print(parameterList.get(j));
if (j != parameterList.size()-1) System.out.print(" ");
}
for (int j = 0; j < parameterList.size(); j++) {
if (parameterList.get(j).equals("obj")&!valueList.get(j).equals("null"))
try {
System.out.println();
alert(Double.parseDouble(valueList.get(j)));
} catch (NumberFormatException e) {
alert(valueList.get(j));
}
}
}
public static void alert(double value) {
System.out.println("double " + value);
}
public static void alert(String value) {
System.out.println("String " + value);
*/