• ,

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;
}

}

package com.javarush.test.level06.lesson08.task02;

Чет совсем не знаю, почему не работает. Пробовал по разному.
package com.javarush.test.level06.lesson08.task02;

/* Статические методы: int getCatCount() и setCatCount(int)
Добавить  к классу Cat два статических метода: int getCatCount() и setCatCount(int), с помощью которых можно получить/изменить количество котов (переменную catCount)
*/

import com.javarush.test.level05.lesson12.home01.Solution;

public class Cat
{
    private static int catCount = 0;

    public Cat()
    {
        catCount++;
    }

    public static int getCatCount()
    {
        return catCount;

    }

    public static void setCatCount(int catCount)
    {

        Cat.catCount++;

    }
}

Что не так?

Не выдаёт ошибок, должно работать, но тесты не проходит.
package com.javarush.test.level06.lesson05.task03;

/* 10 000 объектов Cat и Dog
Создать в цикле 10 000 объектов Cat и Dog. (Java-машина должна начать уничтожать неиспользуемые, и метод finalize хоть раз да вызовется).
*/

import java.util.HashSet;

public class Solution
{
    public static void main(String[] args)
    {
        HashSet<Cat> cats = new HashSet<Cat>();
        HashSet<Dog> dogs = new HashSet<Dog>();
        for (int i=0;i<10000;i++)
        {
            cats.add(new Cat());
            dogs.add(new Dog());
        }

    }
}
class Cat
{
    @Override
    protected void finalize() throws Throwable
    {
        super.finalize();
        System.out.println("Cat destroyed");
    }
}

class Dog
{
    @Override
    protected void finalize() throws Throwable
    {
        super.finalize();
        System.out.println("Dog destroyed");
    }
}

com.javarush.test.level08.lesson08.task05 странно, почему не работает такой код. по логике все должно быть ок

public class Solution
{
    public static HashMap<String, String> createMap()
    {
        //Напишите тут ваш код
        HashMap<String, String> map = new HashMap<String, String>();
        for (int i = 0; i < 10; i++)
        {
            map.put("senate"+i, i%2==0 ? "name" : "name"+i);
        }
        return map;


    }

    public static void removeTheFirstNameDuplicates(HashMap<String, String> map)
    {
        //Напишите тут ваш код

        for (Iterator<Map.Entry<String,String>> itr = map.entrySet().iterator();itr.hasNext();)
        {
            Map.Entry<String,String> entry = itr.next();
            removeItemFromMapByValue(map,entry.getValue());
        }


    }

    public static void removeItemFromMapByValue(HashMap<String, String> map, String value)
    {
        HashMap<String, String> copy = new HashMap<String, String>(map);
        for (Map.Entry<String, String> pair: copy.entrySet())
        {
            if (pair.getValue().equals(value))
                map.remove(pair.getKey());
        }
    }
}

com.javarush.test.level15.lesson12.home04

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

/* Закрепляем Singleton pattern
1. Найти в гугле пример для - Singleton pattern Lazy initialization.
2. По образу и подобию в отдельных файлах создать три синглтон класса Sun, Moon, Earth.
3. Реализовать интерфейс Planet для классов Sun, Moon, Earth.
4. В статическом блоке класса Solution вызвать метод readKeyFromConsoleAndInitPlanet.
5. Реализовать функционал метода readKeyFromConsoleAndInitPlanet:
5.1. С консоли считать один параметр типа String.
5.2. Если параметр равен одной из констант интерфейса Planet, то создать соответствующий объект и присвоить его Planet thePlanet, иначе обнулить Planet thePlanet.
5.3. Сравнивать введенный параметр можно только с константами из Planet, нельзя создавать свои строки.
*/

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

public class Solution {
    public static Planet thePlanet;

    //add static block here - добавьте статический блок тут
    static {
        readKeyFromConsoleAndInitPlanet();
    }

    public static void readKeyFromConsoleAndInitPlanet() {
        // implement step #5 here - реализуйте задание №5 тут
        try
        {
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            String a = reader.readLine();

            if (a.equals(Planet.EARTH))
            {
                thePlanet = Earth.getInstance();
            }
            else if (a.equals(Planet.MOON))
            {
                thePlanet = Moon.getInstance();
            }
            else if (a.equals(Planet.SUN))
            {
                thePlanet = Sun.getInstance();
            }
            else
            {
                thePlanet = null;
            }
        }
        catch (IOException e)
        {

        }
    }
   // public static void main(String[] args) { }
}

пример класса
public class Earth implements Planet
{
    private Earth(){}
    private static class EarthHolder{
        static final Earth instanse = new Earth();
    }
    public static Planet getInstance()
    {
        return EarthHolder.instanse;
    }
}

программа компилится, выполняется, но… не проходит на сервере, братцы, помогите, уже час голову ломаю, не могу понять, что не так.
  • ,

level08.lesson11.bonus03


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

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

/* Задача по алгоритмам
Задача: Введи с клавиатуры 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)
{
//Напишите тут ваш код
int start = 0;
int end = array.length - 1;
doSort(array, start, end);
}

private static void doSort(String[] array, int start, int end){
if (start >= end)
return;
int i = start;
int j = end;
int cur = i - (i - j) / 2;
while (i < j)
{
while (i < cur && isGreaterThen(array[cur], array[i]))
{
i++;
}
while (j > cur && isGreaterThen(array[j], array[cur]))
{
j--;
}
if (i < j)
{
String temp = array[i];
array[i] = array[j];
array[j] = temp;

if (i == cur)
cur = j;
else if (j == cur)
cur = i;

}
}
doSort(array, start, cur);
doSort(array, cur + 1, end);
}

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


Вопрос такой — Решил задачу быстрой сортировкой. Выдало ошибку — программа на сервере выполнялась слишком долго. Переписал пузырьковой, все прошло. Почему так?
  • ,

level08.lesson08.task05;

Добрый вечер добрые ребята) Программа не компилируется IDEA. Моих знаний тупо нехватает исправить, подскажите пожалуйста( или скиньте инфу, чтобы я смог исправить ошибку)

package com.javarush.test.level08.lesson08.task05;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

/* Удалить людей, имеющих одинаковые имена
Создать словарь (Map<String, String>) занести в него десять записей по принципу «фамилия» - «имя».
Удалить людей, имеющих одинаковые имена.
*/

public class Solution
{
    public static HashMap<String, String> createMap()
    {
        HashMap<String,String> map = new HashMap<String, String>();
        map.put("Belous","Dmitry");
        map.put("Rakov","Mihail");
        map.put("Ageeva","Ksenia");
        map.put("Kazakov","Paul");
        map.put("Krizhevskaya","Kristina");
        map.put("Lukanenko","Dmitry");
        map.put("Medvedev","Dmitry");
        map.put("Boarskiy","Mihail");
        map.put("Belousova","Ksenia");
        map.put("Pahan","Paul");
        return map;

    }

    public static void removeTheFirstNameDuplicates(HashMap<String, String> map)
    {

        Iterator<Map.Entry<String,String>> it = map.entrySet().iterator();
        while (it.hasNext()){
        boolean count = true;
        Map.Entry<String,String> k = it.next();
                Iterator<Map.Entry<String,String>> ip = map.entrySet().iterator();
                while( ip.hasNext()){
                Map.Entry<String,String> c = ip.next();
                if (k.getValue().equals(c.getValue())){
                ip.remove();
                count = false;}
                }
        if (!count)it.remove();
        }

    }

    public static void removeItemFromMapByValue(HashMap<String, String> map, String value)
    {
        HashMap<String, String> copy = new HashMap<String, String>(map);
        for (Iterator<Map.Entry<String, String>> iterator = copy.entrySet().iterator(); iterator.hasNext(); ) {
            Map.Entry<String, String> pair = iterator.next();
            if (pair.getValue().equals(value))
                map.remove(pair.getKey());
        }
    }
    public static void main (String[]args) throws Exception{
        HashMap<String,String> map = createMap();
        removeTheFirstNameDuplicates(map);
        for(Map.Entry<String,String>k:map.entrySet()) System.out.println(k.getKey() + " " + k.getValue());
    }
}

  • ,

level26.lesson08.task02

/* Мудрый человек думает раз, прежде чем два раза сказать.
Все методы класса Solution должны быть потоково-безопасными.
Сделайте так, чтобы оба метода могли выполняться одновременно двумя различными трэдами.
synchronized(this) для этого не подходит, используйте другой объект для лока.
*/