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) для этого не подходит, используйте другой объект для лока.
*/
  • ,

level25.lesson02.home01

public enum Column implements Columnable
{
    Customer("Customer"),
    BankName("Bank Name"),
    AccountNumber("Account Number"),
    Amount("Available Amount");

    private String columnName;

    private static int[] realOrder;

    private Column(String columnName) {
        this.columnName = columnName;
    }

    /**
     * Задает новый порядок отображения колонок, который хранится в массиве realOrder.
     * realOrder[индекс в энуме] = порядок отображения; -1, если колонка не отображается.
     *
     * @param newOrder новая последовательность колонок, в которой они будут отображаться в таблице
     * @throws IllegalArgumentException при дубликате колонки
     */
    public static void configureColumns(Column... newOrder) {
        realOrder = new int[values().length];
        for (Column column : values()) {
            realOrder[column.ordinal()] = -1;
            boolean isFound = false;

            for (int i = 0; i < newOrder.length; i++) {
                if (column == newOrder[i]) {
                    if (isFound) {
                        throw new IllegalArgumentException("Column '" + column.columnName + "' is already configured.");
                    }
                    realOrder[column.ordinal()] = i;
                    isFound = true;
                }
            }
        }
    }

    /**
     * Вычисляет и возвращает список отображаемых колонок в сконфигурированом порядке (см. метод configureColumns)
     * Используется поле realOrder.
     *
     * @return список колонок
     */
    public static List<Column> getVisibleColumns() {
        List<Column> result = new LinkedList<>();
        for (int i = 0; i < realOrder.length; i++) {
            if (realOrder[i] != -1)
                result.add(Column.values()[realOrder[i]]);
        }

        return result;
    }

    @Override
    public String getColumnName()
    {
        return columnName;
    }

    @Override
    public boolean isShown()
    {
        return realOrder[this.ordinal()] != -1;
    }

    @Override
    public void hide()
    {
         int index = this.ordinal();
         for (int i = 0; i < realOrder.length; i++) {
             if (realOrder[i] == index)
                 realOrder[i] = -1;
         }
    }
}


Вывод после Column.AccountNumber.hide();:

Account Number
Bank Name
Customer
— Bank Name
Customer
  • ,

Не принимает, хотя работает все правильно показывает.

правильно ли то что я испрользовал массив который буду проходить только в следующем уровне

package com.javarush.test.level06.lesson11.home02;

import java.util.ArrayList;

/* Статические коты
1. В классе Cat добавь public статическую переменную cats (ArrayList).
2. Пусть при каждом создании кота (нового объекта Cat) в переменную cats добавляется этот новый кот. Создать 10 объектов Cat.
3. Метод printCats должен выводить всех котов на экран. Нужно использовать переменную cats.
*/

public class Cat

{
public Cat()
{
Cats.add(this);

}

//add your code here — добавь свой код тут

public static ArrayListCats = new ArrayList();

public static void main(String[] args)
{
//Create 10 Cat-s here — создай 10 котов тут
for(int i = 0; i < 10; i++)
new Cat();
printCats();
}

public static void printCats() {

//add your step 3 code here — добавь свой код для пункта 3 тут

for(int i = 0; i < 10; i++)
{
System.out.println(Cats.get(i));

}

}
}