Это конечно не решение, но все же программа выводит согласно "Вывода", так как под "Вывод" сделана.
Валидатор не принимает по двум условиям:
1. Программа должна выводить данные на экран в соответствии с условием.
2. Программа должна вызывать метод alert с параметром double в случае, если значение параметра obj может быть корректно преобразовано в число типа double.
Понятно, что если взять другой УРЛ, то не пройдет.
Я не читал обсуждения/Помощь, но наверное решение требует познания темы: "Регулярные выражения". Если нет, то напишите пожалуйста что самостоятельно пройти или на какую предыдущую задачу стоит обратить внимание. Если совсем круто, то конечно - же как из того кода что я наваял сделать рабочий?
Еще вопрос, как манипулировать данными содержащимися между двумя символами (например: ? и =, & и & и т. д. )?
Вообщем стыдновато, но как есть.
package com.javarush.task.task15.task1527;
/*
Парсер реквестов
*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) {
ArrayList<String> oldList = new ArrayList<>();
ArrayList<String> newList = new ArrayList<>();
String question = "?";
String and = "&";
double newValue = 0;
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));//add your code here
// String stringOfUrl = "http://javarush.ru/alpha/index.html?lvl=15&view&name=Amigo";
// String stringOfUrl = "http://javarush.ru/alpha/index.html?obj=3.14&name=Amigo";
String stringOfUrl = reader.readLine();
for (int i = 0; i < stringOfUrl.length(); i++) {
oldList.add(stringOfUrl.substring(i, i + 1));
}
String needeedString = Solution.addAfterQuestion(oldList, newList, question);
Solution.addAfterAnd(oldList, newList, and);
// System.out.println(needeedString);
for (int i = 0; i < newList.size(); i++) {
System.out.print(newList.get(i));
}
if (needeedString != (null) & (!(needeedString.isEmpty()))) {
try {
Double.parseDouble(needeedString);
newValue = Double.parseDouble(needeedString);
System.out.println();
Solution.alert(newValue);
} catch (Exception w) {
System.out.println();
Solution.alert(needeedString);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
// Добавить в НовыйСписок стринговое значение из трех символов, которое находится после знака вопроса.
// Если при этом оно соответствует "obj", то в переменную forLastTask занести 4 символа.
public static String addAfterQuestion(ArrayList<String> oldList, ArrayList<String> newList, String any) {
String forLastTask = "";
for (int q = 0; q < oldList.size(); q++) {
if ((oldList.get(q)).equals(any)) {
newList.add(oldList.get(q + 1));
newList.add(oldList.get(q + 2));
newList.add(oldList.get(q + 3));
newList.add(" ");
if (newList.get(0).equals("o") && newList.get(1).equals("b")
&& newList.get(2).equals("j")) {
forLastTask = oldList.get(q + 5) + oldList.get(q + 6) +
oldList.get(q + 7) + oldList.get(q + 8);
} else {
}
}
}
return forLastTask;
}
// Добавить в НовыйСписок стринговое значениеиз четырех символов, которое находится после знака амперсанда.
public static void addAfterAnd(ArrayList<String> oldList, ArrayList<String> newList, String any) {
for (int q = 0; q < oldList.size(); q++) {
if ((oldList.get(q)).equals(any)) {
newList.add(oldList.get(q + 1));
newList.add(oldList.get(q + 2));
newList.add(oldList.get(q + 3));
newList.add(oldList.get(q + 4));
newList.add(" ");
}
}
}
public static void alert(double value) {
System.out.println("double: " + value);
}
public static void alert(String value) {
System.out.println("String: " + value);
}
}
/*
http://javarush.ru/alpha/index.html?lvl=15&view&name=Amigo
*/