Использую строку с разными возможными вариантами
http://javarush.ru/alpha/index.html?obj=3.14&name=Amigo&nthsdf&name=5sdf&smth=2234
Вывод
obj name nthsdf name smth
double: 3.14
String: Amigo
String: 5sdf
double: 2234.0
Не пойму, что еще не так.
Читала про двоеточия, пробовала удалять, добавлять к "String: " и "double: "
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.HashMap;
import java.util.List;
/*
Парсер реквестов
*/
public class Solution {
public static void main(String[] args) {
//add your code here
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
List<String> list = new ArrayList<>();
String lastword = "";
try {
String s = reader.readLine();
s = s.substring(s.indexOf('?') + 1, s.length()); // удалили начало строки до ?
if (s.contains(" ")) s = s.replaceAll("\\s",""); // на всякий удаляем пробелы
while (!s.equals("")){ //делим на параметр=значение
if (s.contains("&")) {
list.add(s.substring(0, s.indexOf('&') ));
s = s.substring(s.indexOf('&') + 1);
}
else {
list.add(s);
break;
}
}
for (String word: list) { // вывозим параметры
if (word.contains("=")) System.out.print(word.substring(0,word.indexOf('=')) + " " );
else System.out.print(word + " " );
}
System.out.println( );
for (String word: list) { //отделяем значения и проверяем на дабл
lastword = "";
if (word.contains("=")) {
lastword = word.substring(word.indexOf('=') + 1);
//System.out.println(lastword);
if (lastword.matches("-\\d*\\.?\\d*") || lastword.matches("-\\d") || lastword.matches("\\d*\\.?\\d*") || lastword.matches("\\d")) {
alert(Double.parseDouble(lastword));
} else {
alert(lastword);
}
}
}
}
catch (IOException e){
//System.out.println(e.getStackTrace() );
}
catch (NumberFormatException e){
//System.out.println(e.getStackTrace() );
}
}
public static void alert(double value) {
System.out.println("double " + value);
}
public static void alert(String value) {
System.out.println("String " + value);
}
}