level15.lesson12.home09

Программа работает, но не проходит тест. Подскажите в чем bug?
/* Парсер реквестов
Считать с консоли URl ссылку.
Вывести на экран через пробел список всех параметров (Параметры идут после ? и разделяются &, например, lvl=15).
URL содержит минимум 1 параметр.
Если присутствует параметр obj, то передать его значение в нужный метод alert.
alert(double value) - для чисел (дробные числа разделяются точкой)
alert(String value) - для строк

Пример 1
Ввод:
http://javarush.ru/alpha/index.html?lvl=15&view&name=Amigo
Вывод:
lvl view name

Пример 2
Ввод:
http://javarush.ru/alpha/index.html?obj=3.14&name=Amigo
Вывод:
obj name
double 3.14
*/

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;

public class Solution {
    public static void main(String[] args) throws IOException
    {
        BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
        URL url = new URL(r.readLine());
        String s = url.toString();
        String s1 = s.substring(s.indexOf("?")+1);
        if (s1.contains("&"))
        {
            String[] s2 = s1.split("&");
            for (String line : s2)
            {
                if (line.contains("=")&&!line.contains("obj"))
                {
                    String attributeName = line.substring(0, line.indexOf("="));
                    System.out.print(attributeName+" ");
                } else  if (!line.contains("=")&&!line.contains("obj"))
                {
                    System.out.print(line+" ");
                } else {
                    String attributeName = line.substring(0, line.indexOf("="));
                    System.out.print(attributeName+" ");
                }
            }
            System.out.println("");
            if (s1.contains("obj"))
            {
                String value = s1.substring(s1.indexOf("obj=")+4, s1.indexOf("&"));
                if (value.contains("."))
                {
                    try
                    {
                        double d = Double.parseDouble(value);
                        alert(d);
                    }
                    catch (NumberFormatException e)
                    {
                    }
                } else
                    alertS(value);
            }
        } else {
            if (s1.contains("=")&&!s1.contains("obj"))
                System.out.println(s1.substring(0,s1.indexOf("=")));
            else if (s1.contains("=")&&s1.contains("obj"))
            {
                System.out.println(s1.substring(0,s1.indexOf("=")));
                try
                {
                    double value = Double.parseDouble(s1);
                    alert(value);
                }
                catch (NumberFormatException e)
                {
                    alertS(s1);
                }
            }
            else
                System.out.println(s1);
        }

    }
    public static void alert(double value) {
        System.out.println("double " + value);
    }

    public static void alertS(String value) {
        System.out.println("String " + value);
    }
}
  • ,

level15.lesson12.home01

while (true) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String
}

}
}

подскажите почему не проходит тестирование?
всё работает по условию, вывод:
выакы
Это тип String, значение выакы
5
Это тип short, значение 5
0.36
Это тип Double, значение 0.36
128
Это тип Integer, значение 128
exit

Process finished with exit code 0

level05.lesson12.home05

Помогите пожалуйста. Написал программу. Вроде работает правильно, но с костылём. Никак не проходит тестирование.
/*
Вводить с клавиатуры числа и считать их сумму, пока пользователь не введёт слово «сумма». Вывести на экран полученную сумму.
*/

Все сделано,но видимо не так как хочет великий сервер. Помогите разобраться.

public static void main(String[] args) throws Exception
    {
        BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
        int summa = 0;
        int i = 0;
        one:
        while(i < 1)
        {
            String vvod = read.readLine();
            if(vvod.equals("сумма"))
            {

                System.out.println(summa);
                continue one;

            }
            else
            {
                int n = Integer.parseInt(vvod);
                summa +=n;
            }
        }

    }


Я не знаю, может быть нужно сделать, что бы после каждого подсчета (сумма) сумма сбрасывалась. Но если добавить после вывода суммы сброс (summa = 0) то сервак все равно не принимает. Никакого порыва к творчеству, нужно делать так, как требует великий и могучий… Печалька.
  • ,

level15.lesson12.home09 - почему такая проверка на сервере?

/* Парсер реквестов
Считать с консоли URl ссылку.
Вывести на экран через пробел список всех параметров (Параметры идут после? и разделяются &, например, lvl=15).
URL содержит минимум 1 параметр.
Если присутствует параметр obj, то передать его значение в нужный метод alert.
alert(double value) — для чисел (дробные числа разделяются точкой)
alert(String value) — для строк

Пример 1
Ввод:
javarush.ru/alpha/index.html?lvl=15&view&name=Amigo
Вывод:
lvl view name

Пример 2
Ввод:
javarush.ru/alpha/index.html?obj=3.14&name=Amigo
Вывод:
obj name
double 3.14
*/

Задачу решил быстро, должно было принять с 1-го раза, но не принимало почему-то.
Пробовал даже на сложных примерах, типа
javarush.ru/alpha/index.html?lvl=15&??view&&&name=Aobjmigo&obj=3.14&name=&obj=djsdcd&&?oobj=3.0
Начал рыться тут в топиках, случайно нашел, что надо поменять contains() на что-то.

Т.е. вместо такого кода
if (obj.contains(".")) {
                        double doubleVal = Double.parseDouble(obj);
                        alert(doubleVal);
                    } else {
                        alert(obj);
                    }


Такой вот код у меня приняло
try {
                        double doubleVal = Double.parseDouble(obj);
                        alert(doubleVal);
                    } catch (NumberFormatException e) {
                        alert(obj);
                    }


В чем смысл, почему так!?
Может мне кто-то объяснить, особенно составители задач?
Тут есть какой-то смысл или это просто издевательство такое?
  • ,

level15.lesson12.home01 не проходит тестирование.

Задача.

/* Разные методы для разных типов
1. Считать с консоли данные, пока не введено слово «exit».
2. Для каждого значения вызвать метод print. Если значение:
2.1. содержит точку '.', то вызвать метод print для Double;
2.2. больше нуля, но меньше 128, то вызвать метод print для short;
2.3. больше либо равно 128, то вызвать метод print для Integer;
2.4. иначе, вызвать метод print для String.
*/

Решение

package com.javarush.test.level15.lesson12.home01;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Solution {
    public static void main(String[] args) throws IOException {
        //напиште тут ваш код
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<String> array = new ArrayList<String>();
        String s = reader.readLine();

        while (true)
        {
            array.add(s);
            if (s.equals("exit"))
                break;
            else
                s = reader.readLine();
        }

        for (String st : array)
        {
            if (st.contains("."))
                try
                {
                    print(Double.parseDouble(st));
                    continue;
                } catch (Exception e)
                {
                  print(st);
                  continue;
                }
            else
            try
            {
                int i = Integer.parseInt(st);
                if ( i > 0 && i < 128)
                {
                    print((short)i);
                    continue;
                }
                else
                {
                    print(i);
                    continue;
                }
            } catch (Exception e)
            {
                print(st);
                continue;
            }
        }


    }

    public static void print(Double value) {
        System.out.println("Это тип Double, значение " + value);
    }

    public static void print(String value) {
        System.out.println("Это тип String, значение " + value);
    }

    public static void print(short value) {
        System.out.println("Это тип short, значение " + value);
    }

    public static void print(Integer value) {
        System.out.println("Это тип Integer, значение " + value);
    }
}


Пробовал разные значение, в консоль все выдает корректно, но тест не проходит.
  • ,

level05.lesson12.bonus03;

Задача вроде бы элементарная, а вот приниматься не желает! Я понятия не имею почему!!!

package com.javarush.test.level05.lesson12.bonus03;

import java.io.BufferedReader;
import java.io.InputStreamReader;

/* Задача по алгоритмам
Написать программу, которая:
1. вводит с консоли число N > 0
2. потом вводит N чисел с консоли
3. выводит на экран максимальное из введенных N чисел.
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int maximum = 0;
        int n = Integer.parseInt(reader.readLine());
        if(n <=0){
            System.exit(0);
        }
        int arr[] = new int[n];
        for(int i = 0; i < n; i++){
            arr[i] = Integer.parseInt(reader.readLine());
            if(arr[i] >= maximum) maximum = arr[i];
        }


        System.out.println(maximum);
    }
}

level05.lesson12.home05

Не понимаю, почему не проходит проверку на сервере. Выполняется верно. Спасибо за помощь!

package com.javarush.test.level05.lesson12.home05;

/* Вводить с клавиатуры числа и считать их сумму
Вводить с клавиатуры числа и считать их сумму, пока пользователь не введёт слово «сумма». Вывести на экран полученную сумму.
*/

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        //Напишите тут ваш код
        int sum = 0;
        while (true)
        {
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            String value = reader.readLine();

            if (value.equals("сумма"))
                break;
            sum = sum + Integer.parseInt(value);
        }
        System.out.println(sum);
    }
}
  • ,

level12.lesson12.bonus03

Задачу решил. Но не понял вот эту конструкцию:
public static class Pair<X, Y>
    {
        public X x;
        public Y y;

        public Pair(X x, Y y)
        {
            this.x = x;
            this.y = y;
        }
    }


Pair — название класса
<X, Y> — дженерики или что это? Я так понимаю что вместо этих X, Y мы можем любой деженерик тип впихнуть?

можете подсказать где об этом прочитать?

Спасибо!
  • ,

com.javarush.test.level07.lesson12.bonus02

В этой задаче заголовок: «Нужно добавить в программу новую функциональность»…
Сбивает с толку. Думаешь что нужно сохранить прежний функционал и добавить новый. Оказывается старый функционал нужно заменить на новый.
  • ,

com.javarush.test.level07.lesson12.bonus02

В этой задаче заголовок: «Нужно добавить в программу новую функциональность»…
Сбивает с толку. Думаешь что нужно сохранить прежний функционал и добавить новый. Оказывается старый функционал нужно заменить на новый.

level05.lesson12.bonus03 не проходит тестирование.

package com.javarush.test.level05.lesson12.bonus03;

import java.io.BufferedReader;
import java.io.InputStreamReader;

/* Задача по алгоритмам
Написать программу, которая:
1. вводит с консоли число N > 0
2. потом вводит N чисел с консоли
3. выводит на экран максимальное из введенных N чисел.
*/