Здравствуйте, помогите разобраться в чем проблема.
Знаю что написано слишком мудрено и много лишнего кода, но все работает как часики.
Валидатор не пропускает последние 3 пункта, хотя все условия выполнены.
Заранее благодарю за участие и да прибудет с вами сила)))
package com.javarush.task.task15.task1527;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
import java.util.ArrayList;
/*
Парсер реквестов
*/
public class Solution {
public static void main(String[] args) {
//add your code here
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String url;
List<String> parameters = new ArrayList<String>();
double number = 0;
String obj = "";
boolean isObj = false;
try{
url = reader.readLine();
url = transform(url);
parameters = findParameters(url);
for(int i = 0; i < parameters.size(); i++){
if (parameters.get(i).contains("obj") && parameters.get(i).contains(".")){
number = getNumber(parameters.get(i));
isObj = true;
}
else if(parameters.get(i).contains("obj")){
url = parameters.get(i).substring(parameters.get(i).charAt('=') + 1);
isObj = true;
}
}
parameters = cleanParameters(parameters);
for (int i = 0; i < parameters.size(); i++)
System.out.print(parameters.get(i) + " ");
if (isObj) {
System.out.println();
if (number != 0)
alert(number);
else if (number == 0)
alert(url);
}
reader.close();
}catch (Exception e){System.out.println("Exception");}
}
public static void alert(double value) {
System.out.println("double: " + value);
}
public static void alert(String value) {
System.out.println("String: " + value);
}
public static String transform(String url){
String parameters;
parameters = url.substring(url.indexOf('?') + 1);
return parameters;
}
public static List<String> findParameters(String url){
List<String> list = new ArrayList<String>();
List<Integer> indexes = new ArrayList<Integer>();
for (int i = 0; i < url.length(); i++){
if (url.charAt(i) == '&')
indexes.add(i);
}
list.add(url.substring(0, indexes.get(0)));
if (indexes.size() > 1) {
for (int i = 0; i < indexes.size(); i++) {
if (i + 1 == indexes.size())
list.add(url.substring(indexes.get(i) + 1));
else {
list.add(url.substring(indexes.get(i) + 1, indexes.get(i + 1)));
}
}
}
else {
list.add(url.substring(indexes.get(0) + 1));
}
return list;
}
public static double getNumber(String line){
double number = 0;
try{
number = Double.parseDouble(line.substring(line.indexOf('=') + 1));
} catch (Exception e){}
return number;
}
public static List<String> cleanParameters(List<String> list){
String clean;
for(int i = 0; i < list.size(); i++){
if (!(list.get(i).contains("="))){
continue;
}
else {
clean = (list.get(i).substring(0, list.get(i).indexOf('=')));
list.set(i, clean);
}
}
return list;
}
}