• ,

level10.lesson11.home09

Здравствуйте, подскажите пожалуйста, в чем ошибка. На intellij IDEA все работает как надо. Но все это не компилируется на сервере.
И еще, правильный ли алгоритм я использовал? как можно оптимизировать этот код?

package com.javarush.test.level10.lesson11.home09;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

/* Одинаковые слова в списке
Ввести с клавиатуры в список 20 слов. Нужно подсчитать количество одинаковых слов в списке.
Результат нужно представить в виде словаря Map<String, Integer>, где первый параметр – уникальная строка,
а второй – число, сколько раз данная строка встречалась в списке.
Вывести содержимое словаря на экран.
В тестах регистр (большая/маленькая буква) не влияет на результат.
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        ArrayList<String> words = new ArrayList<String>();
        for (int i = 0; i < 20; i++)
        {
            words.add(reader.readLine());
        }

        Map<String, Integer> map = countWords(words);

        for (Map.Entry<String, Integer> pair : map.entrySet())
        {
            System.out.println(pair.getKey() + " " + pair.getValue());
        }
    }

    public static Map<String, Integer> countWords(ArrayList<String> list)
    {
        HashMap<String, Integer> result = new HashMap<String, Integer>();
        //Ввод уникальных слов в карту
        for(int i = 0; i < list.size();i++){
            if(!result.containsKey(list.get(i))){
                result.put(list.get(i),1);
            }
            else{
                //Определение кол-ва повторений
                for(HashMap.Entry<String,Integer> pair :result.entrySet()){
                    if(pair.getKey().equals(list.get(i))){
                        int temp = pair.getValue();
                        result.put(list.get(i),temp +1);
                    }
                }
            }
        }
        return result;
    }

}

level12.lesson04.task02

Не проходит тестирование. Задача небось на раз два. А я что то застопорился. Остальные из этой лекции уже решил. Видимо не так трактую условие задачи. Куда копать?


package com.javarush.test.level12.lesson04.task02;

/* print(int) и print(Integer)
Написать два метода: print(int) и print(Integer).
Написать такой код в методе main, чтобы вызвались они оба.
*/

public class Solution
{
    public static void main(String[] args)
    {
        int x = 5;
        Integer y = 5;

        Met.print(x);
        Met.print(y);
    }

    //Напишите тут ваши методы
    public static class Met {

        public static void print(int x){

        }

        public static void print(Integer x){

        }

    }
}

и снова level08.lesson11.home09

Поскольку есть большой риск, что этот текст не все дочитают до конца — хочу в первую очередь выразить благодарность автору этой задачи.

Благодаря его ошибке, во время решения этой задачи я развил себе такие качества как настойчивость, желание идти до конца, умение осваивать новые знания и применять их на практике, смотреть на проблему под разными углами и применять для ее решения разные способы.

Далее по сути задачи:

Нужно ли решать все задачи сразу же?

Посетила меня мысль «Правильно ли я прохожу курс JavaRush?»
В последнее время у меня нет запаса черной материи вообще. Чтобы перейти на следующую лекцию/уровень, нужно решить пару задач. Эффективно ли это?
Вы решаете задачи сразу, когда их дают или же «когда нужно»?
  • ,

level15.lesson12.home09

Как только не проверял уже — с любыми входными данными отрабатывает правильно, но не принимается.
Есть у кого-нибудь идеи?

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

/* Парсер реквестов
Считать с консоли 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.util.ArrayList;


public class Solution {

    public static ArrayList<String> parametrs = new ArrayList<String>();

    public static void main(String[] args) throws IOException{
        ArrayList<String> list = new ArrayList<String>();
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String url = reader.readLine();
        list = urlObjects(url,list);

        for (String s : list)
            System.out.print(s + " ");

        System.out.println();

        if (parametrs!=null)
        {

            for (String s : parametrs)
            {
                if (s.contains(".")) alert(Double.valueOf(s));
                else alert(s);
            }
        }

    }

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

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

    public static ArrayList<String> urlObjects(String url, ArrayList<String> list){

        int indexOfArgument = -1;
        int indexOfParametr = -1;
        int indexZ = url.length();
        String argument, parametr;


        for (int i = 0; i < url.length(); i++)
        {
            char ch = url.charAt(i);
            if ((ch == '?') || (ch == '&'))
            {
                if ((url.charAt(i+1) == '?') || (url.charAt(i+1) == '&')) continue;
                else
                {
                    indexOfArgument = i++;
                    break;
                }
            }
        }

        if (indexOfArgument < 0){
            return list;
        }

        for (int i = ++indexOfArgument; i < url.length(); i++)
        {
            char ch = url.charAt(i);

            if (ch == '='){
                indexOfParametr = i+1;
                indexZ = i;
                break;
            }

            if (ch == '?' || ch == '&') {
                indexZ = i;
                break;
            }

        }

        argument = url.substring(indexOfArgument,indexZ);
        list.add(argument);

        if (argument.equals("obj") && indexOfParametr > 0)
        {
            indexZ = url.length();
            for (int i = indexOfParametr; i < url.length(); i++)
            {
                char ch = url.charAt(i);
                if (ch == '?' || ch == '&')
                {
                    indexZ = i;
                    break;
                }
            }

            parametr = url.substring(indexOfParametr, indexZ);
            parametrs.add(parametr);

        }



        if (indexZ < url.length())
        {
            url = url.substring(indexZ);
            list = urlObjects(url, list);
        }



        return list;
    }
}
  • ,

level15.lesson12.home09

Как только не проверял уже — с любыми входными данными отрабатывает правильно, но не принимается.
Есть у кого-нибудь идеи?

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

/* Парсер реквестов
Считать с консоли 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.util.ArrayList;


public class Solution {

    public static ArrayList<String> parametrs = new ArrayList<String>();

    public static void main(String[] args) throws IOException{
        ArrayList<String> list = new ArrayList<String>();
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String url = reader.readLine();
        list = urlObjects(url,list);

        for (String s : list)
            System.out.print(s + " ");

        System.out.println();

        if (parametrs!=null)
        {

            for (String s : parametrs)
            {
                if (s.contains(".")) alert(Double.valueOf(s));
                else alert(s);
            }
        }

    }

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

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

    public static ArrayList<String> urlObjects(String url, ArrayList<String> list){

        int indexOfArgument = -1;
        int indexOfParametr = -1;
        int indexZ = url.length();
        String argument, parametr;


        for (int i = 0; i < url.length(); i++)
        {
            char ch = url.charAt(i);
            if ((ch == '?') || (ch == '&'))
            {
                if ((url.charAt(i+1) == '?') || (url.charAt(i+1) == '&')) continue;
                else
                {
                    indexOfArgument = i++;
                    break;
                }
            }
        }

        if (indexOfArgument < 0){
            return list;
        }

        for (int i = ++indexOfArgument; i < url.length(); i++)
        {
            char ch = url.charAt(i);

            if (ch == '='){
                indexOfParametr = i+1;
                indexZ = i;
                break;
            }

            if (ch == '?' || ch == '&') {
                indexZ = i;
                break;
            }

        }

        argument = url.substring(indexOfArgument,indexZ);
        list.add(argument);

        if (argument.equals("obj") && indexOfParametr > 0)
        {
            indexZ = url.length();
            for (int i = indexOfParametr; i < url.length(); i++)
            {
                char ch = url.charAt(i);
                if (ch == '?' || ch == '&')
                {
                    indexZ = i;
                    break;
                }
            }

            parametr = url.substring(indexOfParametr, indexZ);
            parametrs.add(parametr);

        }



        if (indexZ < url.length())
        {
            url = url.substring(indexZ);
            list = urlObjects(url, list);
        }



        return list;
    }
}

package com.javarush.test.level09.lesson11.bonus03;

Задача по алгоритмам
Задача: Пользователь вводит с клавиатуры список слов (и чисел). Слова вывести в возрастающем порядке, числа - в убывающем.
Пример ввода:
Вишня
1
Боб
3
Яблоко
2
0
Арбуз
Пример вывода:
Арбуз
3
Боб
2
Вишня
1
0
Яблоко
*/
public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<String> list = new ArrayList<String>();
        while (true)
        {
            String s = reader.readLine();
            if (s.isEmpty()) break;
            list.add(s);
        }

        String[] array = list.toArray(new String[list.size()]);
        sort(array);

        for (String x : array)
        {
            System.out.println(x);
        }
    }

    public static void sort(String[] array)
    {
        for(int i=0; i<array.length; i++)
            for(int j=0; j<array.length; j++)
            {
                if(!isNumber(array[i]) && !isNumber(array[j]) && !isGreaterThen(array[i],array[j]))
                {
                    String temp = array[i];
                    array[i] = array[j];
                    array[j] = temp;
                }
                else if(isNumber(array[i]) && isNumber(array[j]) && isGreaterThen(array[i],array[j]))
                {
                    String temp = array[i];
                    array[i] = array[j];
                    array[j] = temp;
                }
            }
    }

    //Метод для сравнения строк: 'а' больше чем 'b'
    public static boolean isGreaterThen(String a, String b)
    {
        return a.compareTo(b) > 0;
    }


    //строка - это на самом деле число?
    public static boolean isNumber(String s)
    {
        if (s.length() == 0) return false;

        for (char c : s.toCharArray())
        {
            if (!Character.isDigit© && c != '-') return false;
        }
        return true;
    }
}


Тестировал на компе все гуд. А сервер пишет «Программа не прошла тестирование»
  • ,

Кто сколько тратит времени на JavaRush?

Добрый день!

Когда я только начал изучать JR все казалось очень легким и малозатратным,
но после прохождения где то 16 — 17 уровня сложность задач как-то резко возросла,
сейчас порой по пару часов уходит, чтобы решить хотябы ОДНУ задачку :(

Вот и возник интерес: кто сколько в день решает задач, как много вообще времени уходит на них.
Уж очень интересно узнать кто как мучается над ними =)

PS. В первую очередь хочется услышать мнение кто достиг 20levelа or over.

level08.lesson11.bonus03

Решая вот эту задачу.
/* Задача по алгоритмам
Задача: Введи с клавиатуры 20 слов и выведи их в алфавитном порядке.
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String[] array = new String[20];
        for (int i = 0; i < array.length; i++)
        {
            array[i] = reader.readLine();
        }

        sort(array);

        for (String x : array)
        {
            System.out.println(x);
        }
    }

    public static void sort(String[] array)
    {
        for (int i = 0; i < array.length; i++)
        {
            for (int j = 0; j < array.length; j++)
            {
                if (isGreaterThen(array[i], array[j]) == false )
                {
                    String temp = array[i];
                    array[i] = array[j];
                    array[j] = temp;
                }
            }
        }
    }

    //Метод для сравнения строк: 'а' больше чем 'b'
    public static boolean isGreaterThen(String a, String b)
    {
        return a.compareTo(b) > 0;
    }
}


Возник вопрос: а правильно ли она поставлена? Если рассматривать сортировку через compareTo(), то этот этот метод не учитывает регистр.
При вводе: а, Б
Ответ будет: Б, а
Не правильно ли будет изменить метод compareTo() на ccollator? Это так, мысли в слух, никому не в обиду)
  • ,

level09.lesson11.home03;

Не нашёл на сайте ответа на вопрос в чём проблема.

Программа компилируется, работает правильно, но «слишком долго и была закрыта».

Что здесь может быть неправильно??



/* Метод в try..catch
Вводить с клавиатуры числа. Код по чтению чисел с клавиатуры вынести в отдельный метод readData.
Обернуть все тело (весь код внутри readData, кроме объявления списка, где будут храниться числа) этого метода в try..catch.
Если пользователь ввёл какой-то текст, вместо ввода числа, то метод должен перехватить исключение и вывести на экран все введенные числа в качестве результата.
Числа выводить с новой строки сохраняя порядок ввода
*/


public class Solution
{
    public static void main(String[] args) {
        readData();
    }

    public static void readData(){
        ArrayList<Integer> list = new ArrayList<Integer>();
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        while(true)
        {

            try
            {
                list.add(Integer.parseInt(reader.readLine()));

            }
            catch (NumberFormatException e)
            {
                for (int i : list)
                    System.out.println(i);
            }

            catch (IOException e)
            {
                for (int i : list)
                    System.out.println(i);
            }


        }
    }
}

package com.javarush.test.level05.lesson09.task01;

Помогите решить плиз, не пойму в чем дело
package com.javarush.test.level05.lesson09.task01;

/* Создать класс Friend
Создать класс Friend (друг) с тремя конструкторами:
— Имя
— Имя, возраст
— Имя, возраст, пол
*/

public class Friend
{
private String filename = null;
public Friend(String name);
{
this.filename = name;
}
public Friend(String name, String age)
{
this.filename =name + age;
}
public Friend(String name, String age, String sex)
{
this.filename =name + age + sex;
}

}