level09.lesson11.bonus01 - "Программа работал слишком долго и была закрыта"

Всем привет!

Задание: Нужно исправить программу, чтобы компилировалась и работала
Задача: Программа вводит два имени файла. И копирует первый файл на место заданное вторым именем.

Как только не пробовал корректировать. Либо не проходит тестирование, либо «Программа работал слишком долго и была закрыта». Ниже привожу вариант приводящий к «Программа работал слишком долго и была закрыта».


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

        String sourceFileName = reader.readLine();
        String destinationFileName = reader.readLine();

        java.io.FileInputStream fileInputStream = new java.io.FileInputStream(sourceFileName);
        java.io.FileOutputStream fileOutputStream = new java.io.FileOutputStream(destinationFileName);

        int count = 0;
        while (fileInputStream.available()>0);
        {
            int data = fileInputStream.read();
            fileOutputStream.write(data);
            count++;
        }

        System.out.println("Скопировано байт " + count);

        fileInputStream.close();
        fileOutputStream.close();
    }
}


Подскажите, какое решение этой задачи у вас прошло тестирование.

com.javarush.test.level09.lesson11.bonus03

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++) {
            if (isNumber(array[i])) {
                for (int j = i; j < array.length; j++) {
                    if (isNumber(array[j])) {
                        int a = Integer.parseInt(array[i]);
                        int b = Integer.parseInt(array[j]);
                        if (a>b) {
                            String buffer = array[i];
                            array[i] = array[j];
                            array[j] = buffer;
                        }
                    }
                }

            } else {
                for (int j = i; j < array.length; j++) {
                    if (!isNumber(array[j]) && isGreaterThan(array[i], array[j])) {
                        String buffer = array[i];
                        array[i] = array[j];
                        array[j] = buffer;
                    }
                }
            }
        }
    }

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


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

        char[] chars = s.toCharArray();
        for (int i = 0; i < chars.length; i++)
        {
            char c = chars[i];
            if ((i != 0 && c == '-') //есть '-' внутри строки
                    || (!Character.isDigit© && c != '-') ) // не цифра и не начинается с '-'
            {
                return false;
            }
        }
        return true;
    }
}


Подскажите, почему не проходит тестирование?

level10.lesson11.bonus02 Почему не компилируеться на сервере?

Ніяк не можу зрозуміти, чому задача не компілюється на сервері.
package com.javarush.test.level10.lesson11.bonus02;

import java.io.*;
import java.util.HashMap;

/* Нужно добавить в программу новую функциональность
Задача: Программа вводит с клавиатуры пару (число и строку) и выводит их на экран.
Новая задача: Программа вводит с клавиатуры пары (число и строку), сохраняет их в HashMap.
Пустая строка – конец ввода данных. Числа могу повторяться. Строки всегда уникальны. Введенные данные не должны потеряться!
Затем программа выводит содержание HashMap на экран.

Пример ввода:
1
Мама
2
Рама
1
Мыла

Пример вывода:
1 Мыла
2 Рама
1 Мама
*/

public class Solution
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        String key;
        int value;

        while (true) {
            String line = reader.readLine();
            if (line.isEmpty()) break;
            try
            {
                value = new Integer(line);
            } catch (NumberFormatException e) {
                break;
            }

            key = reader.readLine();
            if (key.isEmpty()) break;

            map.put(key, value);
        }

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

У мене все компілюється і нормально працює.
Результати роботи
1
Мама
2
Рама
1
Мыла

2 Рама
1 Мама
1 Мыла
  • ,

level08.lesson08.task05 компилируется тест не проходит

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


Мой вариант ниже компилируется. Проверку не проходит. Уважаемые, подскажите, что не так?

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.HashSet;


public class Solution
{
       
    public static HashMap<String, String> createMap()
    {
        String tempL, tempF, tempI;
        HashMap<String, String> map = new HashMap<String, String>();
        String fName= "Sergey",  lName = "Ivanov"; 
   
        map.put (lName, fName);
        map.put((lName.concat("a")), fName);
         for (int i = 2; i < 8; i++)
         {  
             tempI = Integer.toString(i);
             tempF = fName.concat(tempI);
             tempL = lName.concat(tempI);
             map.put(tempL, tempF);  
       }  
         return (map);
    }
  
   
    public static void removeTheFirstNameDuplicates(HashMap<String, String> map)
    {
        String valueTemp;
        Set<String> setAll  = new HashSet<String>();    
        Set<String> setDubl = new HashSet<String>();
        for (Map.Entry<String, String> pair : map.entrySet())
            { 
            valueTemp =pair.getValue(); 
            if (setAll.contains(valueTemp)) setDubl.add(valueTemp);
            else setAll.add(valueTemp); 
              
            }

        for (String s  : setDubl) removeItemFromMapByValue (map, s);
  
    }
     
    
  
    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());
        }
    }
}
  • ,

level06.lesson11.bonus02 вопрос снят

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

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

/* Нужно добавить в программу новую функциональность
Задача: У каждой кошки есть имя и кошка-мама. Создать класс, который бы описывал данную ситуацию. Создать два объекта: кошку-дочь и кошку-маму. Вывести их на экран.
Новая задача: У каждой кошки есть имя, кошка-папа и кошка-мама. Изменить класс Cat так, чтобы он мог описать данную ситуацию.
Создать 6 объектов: дедушку(папин папа), бабушку(мамина мама), папу, маму, сына, дочь.
Вывести их всех на экран в порядке: дедушка, бабушка, папа, мама, сын, дочь.

Пример ввода:
дедушка Вася
бабушка Мурка
папа Котофей
мама Василиса
сын Мурчик
дочь Пушинка

Пример вывода:
Cat name is дедушка Вася, no mother, no father
Cat name is бабушка Мурка, no mother, no father
Cat name is папа Котофей, no mother, father is дедушка Вася
Cat name is мама Василиса, mother is бабушка Мурка, no father
Cat name is сын Мурчик, mother is мама Василиса, father is папа Котофей
Cat name is дочь Пушинка, mother is мама Василиса, father is папа Котофей
*/

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

        String cat = reader.readLine();
        Cat catGFather = new Cat(cat);

        cat = reader.readLine();
        Cat catGMother = new Cat(cat);

        cat = reader.readLine();
        Cat catFather = new Cat(cat, null, catGFather);

        cat = reader.readLine();
        Cat catMother = new Cat(cat, catGMother, null);

        cat = reader.readLine();
        Cat catSon = new Cat(cat, catMother, catFather);

        cat = reader.readLine();
        Cat catDauther = new Cat(cat, catMother, catFather);

        System.out.println(catGFather);
        System.out.println(catGMother);
        System.out.println(catFather);
        System.out.println(catMother);
        System.out.println(catSon);
        System.out.println(catDauther);
    }

    public static class Cat
    {
        private String name;
        private Cat dad;
        private Cat mam;

        Cat(String name)
        {
            this.name = name;
        }

        Cat(String name, Cat mam, Cat dad)
        {
            this.name = name;
            this.dad = dad;
            this.mam = mam;
        }

        @Override
        public String toString()
        {
            String text = "Cat name is " + name;
            if (mam == null) text += ", no mother";
            else text += ", mother is " + mam.name;
            if (dad == null) text += ", no father";
            else text += ", father is " + dad.name;
            return text;
        }
    }

}


Не проходит тестирование, хотя вроде все условия соблюдены. Согласен, не очень умно, но решил yt уcложнять себе задачи.
  • ,

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

Здравствуйте. Подскажите почему не проходит проверку следующий код? Результат компилится правильно.

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

import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/* Множество всех животных
1. Внутри класса Solution создать public static классы Cat, Dog.
2. Реализовать метод createCats, котороый должен возвращать множество с 4 котами.
3. Реализовать метод createDogs, котороый должен возвращать множество с 3 собаками.
4. Реализовать метод join, котороый должен возвращать объединенное множество всех животных - всех котов и собак.
5. Реализовать метод removeCats, котороый должен удалять из множества pets всех котов, которые есть в множестве cats.
6. Реализовать метод printPets, котороый должен выводить на экран всех животных, которые в нем есть. Каждое животное с новой строки
*/

public class Solution
{
    public static void main(String[] args)
    {
        Set<Cat> cats = createCats();
        Set<Dog> dogs = createDogs();

        Set<Object> pets = join(cats, dogs);
        printPets(pets);

        removeCats(pets, cats);
        printPets(pets);
    }

    public static Set<Cat> createCats()
    {
        HashSet<Cat> result = new HashSet<Cat>();
        //напишите тут ваш код
        for (int i=0; i<4; i++)
        {
            result.add(new Cat());
        }
        return result;
    }

    public static Set<Dog> createDogs()
    {
        //напишите тут ваш код
        HashSet<Dog> result = new HashSet<Dog>();
        for (int i=0; i<3; i++)
        {
            result.add(new Dog());
        }
        return result;
    }

    public static Set<Object> join(Set<Cat> cats, Set<Dog> dogs)
    {
        //напишите тут ваш код
        HashSet<Object> pets = new HashSet<Object>();
        {
            pets.add(cats);
            pets.add(dogs);
        }
        return pets;
    }

    public static void removeCats(Set<Object> pets, Set<Cat> cats)
    {
        //напишите тут ваш код
        for (Iterator<Object> iterator = pets.iterator();iterator.hasNext();)
        {
            Object curObj = iterator.next();
            if (curObj.toString().contains(cats.toString()))
            {
                pets.remove(curObj);
            }
        }
    }

    public static void printPets(Set<Object> pets)
    {
        //напишите тут ваш код
        for (Object x : pets)
        {
            System.out.println(x.toString());
        }
    }

    //напишите тут ваш код
    public static class Dog
    {
    }

    public static class Cat
    {
    }
}

Level08.lesson11.bonus02

Задача решена через Map. Работает корректно. В цикле for можно ограничить кол-во пар «ключ-значение» по желанию. Можно ввести переменную n и забивать HashMap<Город, Семья> до n-посинения.
Через ArrayList/List делать смысла не вижу. Просто будут искусственно связаны i и i+1 элементы.
Перебивать код только для того, чтобы валидатор задачу съел, не хочу.
В решении через Map логика есть. В решении через List, имхо, маловато её.

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

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;



/* Нужно добавить в программу новую функциональность
Задача: Программа определяет, какая семья (фамилию) живёт в доме с указанным номером.
Новая задача: Программа должна работать не с номерами домов, а с городами:
Пример ввода:
Москва
Ивановы
Киев
Петровы
Лондон
Абрамовичи

Лондон

Пример вывода:
Абрамовичи
*/

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

        HashMap<String, String> map = new HashMap<String, String>();



        for (int i = 0; i < 3; i++)
        {
            String k = reader.readLine();
            String v = reader.readLine();
            map.put(k, v);
        }

        String city = reader.readLine();

        Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();

        while (iterator.hasNext())
        {
            Map.Entry<String, String> pair = iterator.next();
            String key = pair.getKey();
            String value = pair.getValue();

            if (key.equals(city))
                System.out.println(value);
        }

    }
}

level08.lesson11.home02;

Не знаю в чем проблема, нажимаю проверить и через 10 секунд появляется окно: программа работала слишком долго и была закрыта. Помогите разобраться в этой теме и что за removeAll и addAll.

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

import java.util.HashSet;
import java.util.Iterator;
import java.util.Objects;
import java.util.Set;

/* Множество всех животных
1. Внутри класса Solution создать public static классы Cat, Dog.
2. Реализовать метод createCats, котороый должен возвращать множество с 4 котами.
3. Реализовать метод createDogs, котороый должен возвращать множество с 3 собаками.
4. Реализовать метод join, котороый должен возвращать объединенное множество всех животных - всех котов и собак.
5. Реализовать метод removeCats, котороый должен удалять из множества pets всех котов, которые есть в множестве cats.
6. Реализовать метод printPets, котороый должен выводить на экран всех животных, которые в нем есть. Каждое животное с новой строки
*/

public class Solution
{

    public static void main(String[] args)
    {
        Set<Cat> cats = createCats();
        Set<Dog> dogs = createDogs();

        Set<Object> pets = join(cats, dogs);
        printPets(pets);

        removeCats(pets, cats);
        printPets(pets);
    }

    public static Set<Cat> createCats()
    {
        HashSet<Cat> result = new HashSet<Cat>();

        //Написать тут ваш код
        result.add(new Cat());
        result.add(new Cat());
        result.add(new Cat());
        result.add(new Cat());

        return result;
    }

    public static Set<Dog> createDogs()
    {
        HashSet<Dog> result = new HashSet<Dog>();
        //Написать тут ваш код
        result.add(new Dog());
        result.add(new Dog());
        result.add(new Dog());

        return result;
    }

    public static Set<Object> join(Set<Cat> cats, Set<Dog> dogs)
    {
        //Написать тут ваш код
        HashSet<Object> result = new HashSet<Object>();
        for(Cat cat : cats){
            result.add(cat);
        }
        for(Dog dog : dogs){
            result.add((dog));
        }

        return result;
    }

    public static void removeCats(Set<Object> pets, Set<Cat> cats)
    {
        //Написать тут ваш код
       Iterator<Object> itpet = pets.iterator();
       Iterator<Cat> itcat = cats.iterator();
        while(itpet.hasNext()){
            while (itcat.hasNext()){
                if(itcat.next().equals(itpet.next())){
                    itpet.remove();
                }
            }
        }



    }
    public static void printPets(Set<Object> pets)
    {
        //Написать тут ваш код
        for(Object pet : pets){
            System.out.println(pet);
        }
    }

    //Написать тут ваш код
    public static class Cat{

    }
       public static class Dog{
       }
}


  • ,

level06.lesson11.home02

Здравствуйте!
Заранее благодарю за помощь!
Я считаю, что:
условия выполенны
код скомпилировован и запцушен без ошибок
вывод тоже верен
но…
Помогите, люди добрые)
public class Cat {
    public Cat() {
    }
    public static ArrayList<Cat> cats = new ArrayList<Cat>();

    public static void main(String[] args) {
        for (int i = 0; i <10; i++) {
            cats.add(new Cat());
        }
        printCats();
    }

    public static void printCats() {
       System.out.print(cats.size());
    }
}
  • ,

Задача level08.lesson11.home02

Вроде бы все компилируется и на экран объекты выводятся, но задача не засчитывается, что я не правильно понял?

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/* Множество всех животных
1. Внутри класса Solution создать public static классы Cat, Dog.
2. Реализовать метод createCats, котороый должен возвращать множество с 4 котами.
3. Реализовать метод createDogs, котороый должен возвращать множество с 3 собаками.
4. Реализовать метод join, котороый должен возвращать объединенное множество всех животных — всех котов и собак.
5. Реализовать метод removeCats, котороый должен удалять из множества pets всех котов, которые есть в множестве cats.
6. Реализовать метод printPets, котороый должен выводить на экран всех животных, которые в нем есть. Каждое животное с новой строки
*/

public class Solution
{
public static void main(String[] args)
{
Setcats = createCats();
Setdogs = createDogs();

Setpets = join(cats, dogs);
printPets(pets);

removeCats(pets, cats);
printPets(pets);
}

public static SetcreateCats()
{
HashSetresult = new HashSet();

result.add(new Cat("Васька"));
result.add(new Cat("Попива"));
result.add(new Cat("Мурка"));
result.add(new Cat("Артоша"));

return result;
}

public static SetcreateDogs()
{
HashSetdogs = new HashSet();
dogs.add(new Dog("Спайк"));
dogs.add(new Dog("Жучка"));
dogs.add(new Dog("Полкан"));
return dogs;
}

public static Setjoin(Setcats, Setdogs)
{
HashSetpets = new HashSet();
pets.add(cats);
pets.add(dogs);
return pets;
}

public static void removeCats(Setpets, Setcats)
{
pets.remove(cats);
}

public static void printPets(Setpets)
{
Iteratorite = pets.iterator();
while (ite.hasNext()){
Object text = ite.next();
System.out.println(text);
}
}

public static class Cat{
String name;

public Cat(String name){
this.name = name;
}
}
public static class Dog{
String name;

public Dog(String name){
this.name = name;
}
}
}
  • ,

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

Почему не проходит задача?

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

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

/* Задача по алгоритмам
Задача: Написать программу, которая вводит с клавиатуры 5 чисел и выводит их в возрастающем порядке.
Пример ввода:
3
2
15
6
17
Пример вывода:
2
3
6
15
17
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        int[] a = new int[5];

        for(int i=0; i<5; i++)
        {
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
            a[i] = Integer.parseInt(bufferedReader.readLine());
        }

        for(int i=0; i<a.length; i++)
        {
            for(int j=0; j<a.length; j++)
            {

                if(a[i]<a[j])
                {
                    int k = a[i];
                    a[i] = a[j];
                    a[j] = k;
                }
            }
        }

        for(int i=0; i<a.length; i++)
        {
            System.out.println(a[i]);
        }
    }
}

level09.lesson11.home02

Вопрос к проверке данной задачи
Я добавил sleep, и как то, на автомате throws InterruptedException в main и прошел проверку, без единого try, что не соответствует задаче.
з.ы. И, дайте возможность повторной валидации, если я хочу оптимизировать и проверить свой код.

public static void main(String[] args) throws InterruptedException
    {
        for (int i = 10; i >= 0; i--)
        {
            System.out.println(i);
            Thread.sleep(100);
        }
    }