принципиально не захотел гуглить всякие сплиты и решил изобрести велосипед, вроде получилось даже, но валидатор со мной не согласен по третьему пункту "Программа должна выводить данные на экран в соответствии с условием." Почитал предыдущие комменты, добавил несколько проверок - не помогло(
package com.javarush.task.task15.task1527;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.Format;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/*
Парсер реквестов
*/
public class Solution {
public static void main(String[] args) throws IOException {
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);
}
}