Предвосхищая неодобрительные комментарии - понимаю "качество" решения и то, что оно подразумевает наличие не более двух параметров, но все же, почему не пропускает п.3?
package com.javarush.task.task15.task1527;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
/*
Парсер реквестов
*/
public class Solution {
public static void main(String[] args) throws IOException{
//add your code here
BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
char[] symbol = r.readLine().toCharArray();
ArrayList<Character> par1 = new ArrayList<Character>();
ArrayList<Character> znach1 = new ArrayList<Character>();
ArrayList<Character> par2 = new ArrayList<Character>();
ArrayList<Character> znach2 = new ArrayList<Character>();
for(int j = 0; j < symbol.length-1; j++) {
if (symbol[j] == '?') {
for (int i = j+1; i < symbol.length-1; ) {
if (symbol[i] == '=') break;
par1.add(symbol[i]);
//System.out.println(par1);
i++;
}
}
else if (symbol[j] == '=' && znach1.isEmpty()) {
for (int i = j+1; i < symbol.length-1; ) {
if (symbol[i] == '&') break;
znach1.add(symbol[i]);
//System.out.println(znach1);
i++;
}
}
else if (symbol[j] == '&') {
for (int i = j+1; i < symbol.length-1; ) {
if (symbol[i] == '=') break;
par2.add(symbol[i]);
//System.out.println(par2);
i++;
}
}
else if (symbol[j] == '=') {
for (int i = j+1; i < symbol.length; ) {
if (symbol[i] == '&') break;
znach2.add(symbol[i]);
//System.out.println(znach2);
i++;
}
}
}
char[] p_1 = new char[par1.size()];
for(int a = 0; a < par1.size(); a++) p_1[a] = par1.get(a);
String p1 = new String(p_1);
char[] p_2 = new char[par2.size()];
for(int a = 0; a < par2.size(); a++) p_2[a] = par2.get(a);
String p2 = new String(p_2);
System.out.println(p1 + " " + p2);
char[] z_1 = new char[znach1.size()];
for(int a = 0; a < znach1.size(); a++) z_1[a] = znach1.get(a);
String z1 = new String(z_1);
char[] z_2 = new char[znach2.size()];
for(int a = 0; a < znach2.size(); a++) z_2[a] = znach2.get(a);
String z2 = new String(z_2);
if(p1.equals("obj")) {
try {
double d = Double.parseDouble(z1);
alert(d);
}
catch(Exception e){
alert(z1);
}
}
if(p2.equals("obj")) {
try {
double d = Double.parseDouble(z2);
alert(d);
}
catch(Exception e){
alert(z2);
}
}
}
public static void alert(double value) {
System.out.println("double: " + value);
}
public static void alert(String value) {
System.out.println("String: " + value);
}
}