• ,

level10.lesson11.bonus02 не проходит тест. JVM принимает.


/* Нужно добавить в программу новую функциональность
Задача: Программа вводит с клавиатуры пару (число и строку) и выводит их на экран.
Новая задача: Программа вводит с клавиатуры пары (число и строку), сохраняет их в 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));

        int id;
        String name;
        String var;

        HashMap<String, Integer> map = new HashMap<>();
        do
        {
           var = reader.readLine();

                name = reader.readLine();
            // проверка условия ввода пустой строки: true => конец цикла
                if (name.isEmpty()) break;
                else
                {
                    //  есть совпадения true => continue
                   if (!proverkaMap(map,name)) continue;

                    else
                   {
                       id = Integer.parseInt(var);
                       map.put(name, id);
                   }
                }
              System.out.println(id + " " + name);
        }
        while (true);
    }
            /* метод проверки: Является массив map пустым и если он
                не пуст, то проверить на совпадения */
    public static boolean proverkaMap(HashMap map,String name)
       // Метод закрыт для соблюдения условия договора//

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 Мыла
  • ,

(решено) level18.lesson10.bonus02:не могу понять в чем проблема, почему не принимает.

/* Прайсы
CrUD для таблицы внутри файла
Считать с консоли имя файла для операций CrUD
Программа запускается со следующим набором параметров:
-c productName price quantity
Значения параметров:
где id - 8 символов
productName - название товара, 30 chars (60 bytes)
price - цена, 8 символов
quantity - количество, 4 символа
-c  - добавляет товар с заданными параметрами в конец файла, генерирует id самостоятельно, инкрементируя максимальный id, найденный в файле

В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
id productName price quantity
Данные дополнены пробелами до их длины

Пример:
19846   Шорты пляжные синие           159.00  12
198478  Шорты пляжные черные с рисунко173.00  17
19847983Куртка для сноубордистов, разм10173.991234
*/

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

public class Solution {
    public static void main(String[] args) throws Exception {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String fileName = reader.readLine();
        String productName = args[1].length() > 30 ? args[1].substring(0,30) : args[1];
        Double price = Double.parseDouble(args[2].length() > 8 ? args[2].substring(0,8) : args[2]);
        Short quantity = Short.parseShort(args[2].length() > 4 ? args[3].substring(0,4): args[3]);
        reader.close();
        if (args[0].equals("-c")){
            RandomAccessFile file = new RandomAccessFile(fileName,"rw");
                file.seek(file.length()); String lastString = file.readLine().substring(0,8).toLowerCase();
            int id = Integer.parseInt(lastString.substring(0,lastString.lastIndexOf("[\\0-9]"))); id+=1;
            String ids = String.valueOf(id);
            String volue = ids.concat(productName).concat(String.valueOf(price)).concat(String.valueOf(quantity));
            file.writeChars(volue);
            file.close();
        }
    }
}
  • ,

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ложнять себе задачи.

level 06, bonus 2. Все компилируется, но не проходит тест

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

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

/* Нужно добавить в программу новую функциональность
Задача: У каждой кошки есть имя и кошка-мама. Создать класс, который бы описывал данную ситуацию. Создать два объекта: кошку-дочь и кошку-маму. Вывести их на экран.
Новая задача: У каждой кошки есть имя, кошка-папа и кошка-мама. Изменить класс 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 grandFather=reader.readLine();
Cat catGrandFather=new Cat(grandFather);

String grandMother=reader.readLine();
Cat catGrandMother=new Cat(grandMother);

String Father=reader.readLine();
Cat catFather=new Cat(Father,null,catGrandFather);

String Mother=reader.readLine();
Cat catMother=new Cat(Mother,catGrandMother,null);

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

String Daughter=reader.readLine();
Cat catDaughter=new Cat(Daughter,catMother,catFather);

System.out.println(catGrandFather);
System.out.println(catGrandMother);
System.out.println(catFather);
System.out.println(catMother);
System.out.println(catSon);
System.out.println(catDaughter);
}

public static class Cat
{
private String name;
private Cat father;
private Cat mother;

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

public Cat(String name,Cat father,Cat mother)
{
this.name = name;
this.father=father;
this.mother = mother;

}

@Override
public String toString()
{
if (mother == null&&father==null)
return «Cat name is » + name + ", no mother, no father";
else if (mother==null)
return «Cat name is „+ name + “, no mother, father is „+father.name;
else if (father==null)
return “Cat name is „+name+“, mother is „+mother.name+“, no father»;
else
return «Cat name is „+name+“, mother is „+mother.name+“, father is „+ father.name;
}
}

}

level18.lesson10.bonus02

Не понятно, как инкрементировать ID.

Если нужно искать самый большой ID во всем файле и инкрементировать его, то что делать когда он будет 99999999? Судя по условию, расширять длину ID нельзя, что остаётся? Делать ли его 1? А если в начале такой ID уже был?

И даже если так, то когда я один раз перейду этот барьер, то код все равно будет находить максимальный ID из всего файла, который равен 99999999 и после этого каждый следующий ID будет 1. Так может быть нужно последний инкрементировать и все?

/* Прайсы
CrUD для таблицы внутри файла
Считать с консоли имя файла для операций CrUD
Программа запускается со следующим набором параметров:
-c productName price quantity
Значения параметров:
где id - 8 символов
productName - название товара, 30 chars (60 bytes)
price - цена, 8 символов
quantity - количество, 4 символа
-c  - добавляет товар с заданными параметрами в конец файла, генерирует id самостоятельно, инкрементируя максимальный id, найденный в файле

В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
id productName price quantity
Данные дополнены пробелами до их длины

Пример:
19846   Шорты пляжные синие           159.00  12
198478  Шорты пляжные черные с рисунко173.00  17
19847983Куртка для сноубордистов, разм10173.991234
*/

level14.lesson08.bonus02

Здравствуйте почему не проходит?
package com.javarush.test.level14.lesson08.bonus02;

/* НОД
Наибольший общий делитель (НОД).
Ввести с клавиатуры 2 целых положительных числа.
Вывести в консоль наибольший общий делитель.
*/

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

public class Solution
{
public static void main(String[] args) throws Exception
{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Integer a = Math.abs(Integer.parseInt(reader.readLine()));
BufferedReader reader1 = new BufferedReader(new InputStreamReader(System.in));
Integer b = Math.abs(Integer.parseInt(reader1.readLine()));

while (true)
{
if (a == b)
{
System.out.println(«НОД = » + a);
break;
} else if (a > b)
{
a = a — b;

} else
{
b = b — a;
}
}
}
}
  • ,

level16.lesson13.bonus02 ну и где трабл?

Вот не могу понять где трабл… Вроде всё работает, сервер не принимает.
Уже 3 раза переписывал и исправлял. Хелп)

package com.javarush.test.level16.lesson13.bonus02;

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

/* Клубок
1. Создай 5 различных своих нитей c отличным от Thread типом:
1.1. нить 1 должна бесконечно выполняться;
1.2. нить 2 должна выводить "InterruptedException" при возникновении исключения InterruptedException;
1.3. нить 3 должна каждые полсекунды выводить "Ура";
1.4. нить 4 должна реализовать интерфейс Message, при вызове метода showWarning нить должна останавливаться;
1.5. нить 5 должна читать с консоли цифры пока не введено слово "N", а потом вывести в консоль сумму введенных цифр.
2. В статическом блоке добавь свои нити в List<Thread> threads в перечисленном порядке.
3. Нити не должны стартовать автоматически.
Подсказка: Нить 4 можно проверить методом isAlive()
*/

public class Solution
{
    public static List<Thread> threads = new ArrayList<Thread>(5);

    static
    {
        threads.add(new Thread1());
        threads.add(new Thread2());
        threads.add(new Thread3());
        threads.add(new Thread4());
        threads.add(new Thread5());
    }

    public static class Thread1 extends Thread
    {

        @Override
        public void run()
        {
            while (true)
            {
            }
        }
    }

    public static class Thread2 extends Thread
    {

        @Override
        public void run()
        {
            try
            {
                while (!isInterrupted())
                {
                }
                throw new InterruptedException();
            }
            catch (InterruptedException e)
            {
                System.out.println("InterruptedException");
            }
        }
    }

    public static class Thread3 extends Thread
    {
        @Override
        public void run()
        {
            try
            {
                System.out.println("Ура");
                Thread.sleep(500);
            }
            catch (InterruptedException e)
            {
            }
        }
    }

    public static class Thread4 extends Thread implements Message
    {

        @Override
        public void showWarning()
        {
            this.interrupt();
            try
            {
                this.join();
            }
            catch (InterruptedException e)
            {
            }
        }

        @Override
        public void run()
        {
            while (!this.isInterrupted())
            {
            }
        }
    }

    public static class Thread5 extends Thread
    {

        @Override
        public void run()
        {
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            String s;
            int sum = 0;

            try
            {
                while (!isInterrupted())
                {
                    s = reader.readLine();
                    if (s.equals("N")) this.interrupt();
                    else sum += Integer.parseInt(s);
                }

                throw new InterruptedException();
            }catch (IOException e){}
            catch (InterruptedException e){
                System.out.println(sum);
            }
        }
    }
}

level20.lesson10.bonus02

Задача не принимается: с, все тесты которые смог придумать, не только которые тут — проходит, может хотя бы тестов подкините, сразу говорю код просто ужасен, и трудно понять, но увы, пока что не умею щелкать алгоритмы, так чтобы коротко все было и понятно по логике, но все же, код работает, в общем хочу чтобы подкинули тестов на задачу, ну конечно было бы отлично сказать что не так:


package com.javarush.test.level20.lesson10.bonus02;

import java.util.ArrayList;
import java.util.Collections;

/* Алгоритмы-прямоугольники
1. Дан двумерный массив N*N, который содержит несколько прямоугольников.
2. Различные прямоугольники не соприкасаются и не накладываются.
3. Внутри прямоугольник весь заполнен 1.
4. В массиве:
4.1) a[i, j] = 1, если элемент (i, j) принадлежит какому-либо прямоугольнику
4.2) a[i, j] = 0, в противном случае
5. getRectangleCount должен возвращать количество прямоугольников.
6. Метод main не участвует в тестировании
*/
public class Solution {
    public static void main(String[] args) {
        byte[][] a = new byte[][]{
                {1, 1, 0, 0},
                {1, 1, 0, 0},
                {1, 1, 0, 0},
                {1, 1, 0, 1}
        };
        int count = getRectangleCount(a);
        System.out.println("Count = " + count + ". Должно быть 2" + " result: " + String.valueOf( count == 2));
        a = new byte[][]{
                {1, 1, 0, 0},
                {1, 1, 0, 0},
                {0, 0, 0, 0},
                {1, 1, 0, 1}
        };
        count = getRectangleCount(a);
        System.out.println("Count = " + count + ". Должно быть 3" + " result: " + String.valueOf( count == 3));

        a = new byte[][]{
                {1, 1, 1, 0},
                {1, 1, 1, 0},
                {1, 1, 1, 0},
                {0, 0, 0, 0}
        };
        count = getRectangleCount(a);
        System.out.println("Count = " + count + ". Должно быть 1" + " result: " + String.valueOf( count == 1));

        a = new byte[][]{
                {1, 1, 0, 0, 0},
                {1, 1, 0, 1, 1},
                {1, 1, 0, 0, 0},
                {1, 1, 0, 0, 1},
                {0, 0, 0, 0, 1}

        };
        count = getRectangleCount(a);
        System.out.println("Count = " + count + ". Должно быть 3" + " result: " + String.valueOf( count == 3));

        a = new byte[][]{
                {1, 0, 1,},
                {0, 0, 1,},
                {1, 0, 1,},

        };
        count = getRectangleCount(a);
        System.out.println("Count = " + count + ". Должно быть 3" + " result: " + String.valueOf( count == 3));

        a = new byte[][]{
                {1, 0, 0,},
                {0, 0, 0,},
                {0, 0, 1,},

        };
        count = getRectangleCount(a);
        System.out.println("Count = " + count + ". Должно быть 2" + " result: " + String.valueOf( count == 2));

        a = new byte[][]{
                {1, 1, 0,},
                {0, 0, 0,},
                {0, 1, 1,},

        };
        count = getRectangleCount(a);
        System.out.println("Count = " + count + ". Должно быть 2" + " result: " + String.valueOf( count == 2));

    }

    public static int getRectangleCount(byte[][] a) {
        int count =0;
        //Делаем из массива - одномерный массив.
        ArrayList<Integer> tmp  = new ArrayList<>();
        for(int i=0;i<a.length;i++)
        {

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

                if (a[i][j] == 1)
                {
                    tmp.add(1);

                } else tmp.add(0);

            }

        }

        boolean v = true; //метка которая говорит о том что если она тру, значит элемент не менялся если фолс то мы заменяли
        ArrayList<Integer>del = new ArrayList<>();
        //определяем переходу на следующую строку
        for(int i=a.length;i<=a.length*a.length;i+=a.length)
        {

            del.add(i);

        }
        //идем по строке (одномерному массиву)
        out:  for(int i=0;i<tmp.size();i++)
        {
            //проверяем или в строке вообще есть 0, если нету то понятно что 1 прмоугольник
            String sTrue="";
            for(int l=0;l<tmp.size();l++)
            {
                sTrue+=String.valueOf(tmp.get(l));
            }
            if(!sTrue.contains("0")) {
                count++;
                return count;
            }


            //замена и проверка
            try
            {
                //проверяем прямоугтльник
                if (tmp.get(i).equals(1) && tmp.get(i).equals(tmp.get(i + a.length)))
                {

                    //елси находим одинаковые соотвественные элементы, меняим их на 0 и ставит метку на фолс
                    for (int j = i; j < tmp.size(); j += a.length)
                    {
                        if(tmp.get(j).equals(1))
                        {
                            tmp.set(j, 0);
                            v = false;
                        }
                        else continue out;
                    }
                    //проверяем или индекс "хождения" не превышает строку в двумерном массиве, если превышает то увеличиваем кол-во
                    if(Collections.frequency(del, i)>0)count++;
                }
                //если элемент равен 0, а наша метка фолсу, то увеличиваем количество прямоугольников и ставим метку в тру
                else if(tmp.get(i).equals(0)&& !v) {
                    count++;
                    v=true;
                }

            }
            catch (Exception e){
                //если вылазим за пределы индекса, то последнюю строку в двумерном массиве разбираем
                ArrayList<Integer> list = new ArrayList<>();
                for(int k=i;k<tmp.size();k++)
                {

                    list.add(tmp.get(k));

                    tmp.set(k,0);
                }
                String s="";
                for(int h=0;h<list.size();h++)
                {
                    s+=list.get(h);

                }

                String[]ss = s.split("0+");
                count+=ss.length;
                break ;
            }

        }
        //оставшиеся прямоугольники
        String s1="";
        for(int i=0;i<tmp.size();i++)
            if (tmp.get(i).equals(1))
            {
                s1+=String.valueOf(tmp.get(i));

            }
        if(s1.contains("1"))
        {
            String[] ss1 = s1.split("0+");
            count += ss1.length;
        }

        return count;
    }
}
  • ,

com.javarush.test.level07.lesson12.bonus02

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

com.javarush.test.level07.lesson12.bonus02

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

evel18.lesson10.bonus02

Добрый день, Коллеги!
Не принимает мой код валидатор. По-идее все условия отрабатываются, даже когда файл пустой или содержит приведенные в условии строки:

package com.javarush.test.level18.lesson10.bonus02;

/* Прайсы
CrUD для таблицы внутри файла
Считать с консоли имя файла для операций CrUD
Программа запускается со следующим набором параметров:
-c productName price quantity
Значения параметров:
где id - 8 символов
productName - название товара, 30 chars (60 bytes)
price - цена, 8 символов
quantity - количество, 4 символа
-с  - добавляет товар с заданными параметрами в конец файла, генерирует id самостоятельно, инкрементируя максимальный id

В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
id productName price quantity
Данные дополнены пробелами до их длины

Пример:
19846   Шорты пляжные синие           159.00  12
198478  Шорты пляжные черные с рисунко173.00  17
19847983Куртка для сноубордистов, разм10173.991234
*/

import java.io.*;
import java.util.ArrayList;

public class Solution {
    public static void main(String[] args) throws Exception {
        if (args.length == 4) {
            if (args[0].equals("-c")) {
                String productName = String.format("%-30.30s",args[1]);
                String productPrice = String.format("%-8.8s",args[2]);
                String productQuantity = String.format("%-4.4s", args[3]);

                BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
                String fn = reader.readLine();
                BufferedReader fileReader = new BufferedReader(new FileReader(fn));
                String line;
                int max = 0;
                while ((line = fileReader.readLine()) != null) {
                    int id = Integer.parseInt(line.substring(0, 8).trim());
                    if (max < id) max =id;
                }
                fileReader.close();
                int newid = max + 1;
                String newidstr = String.format("%-8.8s", String.valueOf(newid));

                BufferedWriter fileWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fn, true),"cp1251"));
                if (newid != 1) fileWriter.newLine();
                newidstr = newidstr + productName + productPrice + productQuantity;
                fileWriter.append(newidstr);
                fileWriter.flush();
                fileWriter.close();
            }
        }
    }
}


Передаваемые параметры:

-c "супер тест" 158.05 55

Результат работы:

19846   Шорты пляжные синие           159.00  12
198478  Шорты пляжные черные с рисунко173.00  17
19847983Куртка для сноубордистов, разм10173.991234
19847984супер тест                    158.05  55