level33.lesson10.bonus01

Уже недели 2 бьюсь над ней и никак не проходит тесты на сервере, хоть все тесты в комментариях людей в соседнем топике, и мои собственным безумные CDATA файлы, комментирует то что нужно, пожалуйста помогите: с
решение не очень красивое и без w3c, которым кстати было бы круто научится пользоваться :)
вот код:

   public static String toXmlWithComment(Object obj, String tagName, String comment) {

        try
        {
            JAXBContext context = JAXBContext.newInstance(obj.getClass());
            StringWriter writer = new StringWriter();
            Marshaller marshaller = context.createMarshaller();
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
            marshaller.marshal(obj, writer);
//            writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n" +
//                    "<shop>\n" +
//                    "    <goods>\n" +
//                    "        <name>S1</name>\n" +
//                    "        <![CDATA[<name>S2</name>]]>\n" +
//                    "    </goods>\n" +
//                    "    <count>12</count>\n" +
//                    "    <name>123.4</name><![CDATA[\n" +
//                    "    <name>String1</name>\n" +
//                    "    <name>String2</name>]]>\n" +
//                    "    <name>String3</name>\n" +
//                    "    <![CDATA[<name>String4</name>]]>\n" +
//                    "    <name>String5</name>\n" +
//                    "</shop>");

            String xml = writer.toString();
            String commentPut = "<!--"+comment+"-->";
            String tag = "<"+tagName;

            //Создаю регулярку для поиска CDATA
            Pattern pattern = Pattern.compile("(<!\\[CDATA\\[(.|\n)*?]]>)");
            Matcher matcher = pattern.matcher(xml);
            //Все найденные CDATA кладу в лист
            List<String> cdatas = new ArrayList<>();
            while (matcher.find()){
                cdatas.add(matcher.group());
            }
            //Заменяю все CDATA на другой тег
            xml = (xml.replaceAll(pattern.pattern(),"<URURU/>"));

            //ставлю комментарии в xml в котором нету CDATA и есть URURU teg
            List<String> list = new ArrayList<>(Arrays.asList(xml.split("\n")));
            List<String> copy = new ArrayList<>(list);
            for(int i =0;i<copy.size();i++){
                String s = copy.get(i);
                if(s.contains(tag)){
                    int count = spaceCount(s);
                    for(int j =0;j<count;j++){
                       commentPut = " "+commentPut;
                    }
                    list.set(i,commentPut+"\n"+s);
                    commentPut = commentPut.trim();
                }

            }
            //делаю новый xml который уже с комментами
            StringBuilder comments = new StringBuilder();
            for(String elem : list){
                comments.append(elem+"\n");
            }
            xml = comments.toString();


            //заменяю все URURU обратно на CDATA
             List<String> ururu = new ArrayList<>(Arrays.asList(xml.split("<URURU/>")));
            for(int i =0;i<cdatas.size();i++){
                String s = ururu.get(i);
                s+=cdatas.get(i);
                ururu.set(i,s);
            }

            //Делаю финальный xml
            StringBuilder result = new StringBuilder();
            for(String cdata : ururu)
            result.append(cdata);


        return result.toString().replace("standalone=\"yes\"","standalone=\"no\"");

        }
        catch (JAXBException e)
        {
            e.printStackTrace();
            return "";
        }
    }
    //штука для счета пробелов
    public static int spaceCount(String word){
        word = word.substring(0,word.indexOf("<"));
        int count = 0;
        char[] array = word.toCharArray();
        for(Character charc : array){
            if(charc == ' ')count++;
        }
        return count;
    }
  • ,

level06.lesson11.bonus02

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

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

import java.io.IOException;

/* Нужно добавить в программу новую функциональность
Задача: У каждой кошки есть имя и кошка-мама. Создать класс, который бы описывал данную ситуацию. Создать два объекта: кошку-дочь и кошку-маму. Вывести их на экран.
Новая задача: У каждой кошки есть имя, кошка-папа и кошка-мама. Изменить класс 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
    {
        Cat catGrandfather = new Cat("дедушка Вася", null, null);
        Cat catGrandmother = new Cat("бабушка Мурка", null, null);
        Cat catFather = new Cat("папа Котофей", catGrandfather, null);
        Cat catMother = new Cat("мама Василиса", null, catGrandmother);
        Cat catSon = new Cat("сын Мурчик", catFather, catMother);
        Cat catDaughter = new Cat("дочь Пушинка", catFather, catMother);

        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, Cat father, Cat mother)
        {
            this.name = name;
            this.father = father;
            this.mother = mother;
        }

        @Override
        public String toString()
        {
            if (father == null && mother == 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;
            }
        }
    }

}

com.javarush.test.level05.lesson07.task05

/* Создать класс прямоугольник (Rectangle)
Создать класс прямоугольник (Rectangle). Его данными будут top, left, width, height (левая координата, верхняя, ширина и высота). Создать для него как можно больше методов initialize(…)
Примеры:
-	заданы 4 параметра: left, top, width, height
-	ширина/высота не задана (оба равны 0)
-	высота не задана (равно ширине) создаём квадрат
-	создаём копию другого прямоугольника (он и передаётся в параметрах)
*/

public class Rectangle
{
    int t=0;
    int l=0;
    int w=0;
    int h=0;
    
    public void initialize(int l, int t, int w, int h){
    this.l=l;
    this.t=t;
    this.w=w;
    this.h=h;
}

    public void initialize(int l, int t){
    this.l=l;
    this.t=t;
}

    public void initialize(int l, int t, int w, int h) {
    this.l=l;
    this.t=t;
    this.w=w;
    this.h=w;
}

    public void initialize(Rectangle rec){
    this.t=rec.t;
    this.l=rec.l;
    this.w=rec.w;
    this.h=rec.h;
}

}

src/com/javarush/test/level05/lesson07/task05/Rectangle.java:31: error: method initialize(int,int,int,int) is already defined in class Rectangle
public void initialize(int l, int t, int w, int h) {
^
1 error

Получаю вот такой еррор. В чем именно суть — не могу понять. Ошибка в том что у меня два инициализатора с одинаковыми наборами передаваемых параметров? Как это исправить, в таком случае, я тоже не понимаю. :(
  • ,

level27.lesson15.big01 Задание 8

дравствуйте. Уже крыша едет от этого задания. Помогите пожалуйста.

Вот эту строчку:

 AdvertisementManager manager = new AdvertisementManager(order.getTotalCookingTime());
    manager.processVideos();

Уже засовывал куда только можно. Перед отправкой заказа, после, в Cook. Ничего не помогает.

Advertisment:

package com.javarush.test.level27.lesson15.big01.ad;
/**
 * Created by user on 17.03.2015.
 */
public class Advertisement
{
    private Object content;
    private String name;
    private long initialAmount;
    private int hits;
    private int duration;
    private long amountPerOneDisplaying;
    public Advertisement(Object content, String name, long initialAmount, int hits, int duration)
    {
        this.content = content;
        this.name = name;
        this.initialAmount = initialAmount;
        this.hits = hits;
        this.duration = duration;
        amountPerOneDisplaying = initialAmount / hits;
    }
    public String getName()
    {
        return name;
    }
    public long getInitialAmount()
    {
        return initialAmount;
    }
    public long getAmountPerOneDisplaying()
    {
        return amountPerOneDisplaying;
    }
}<br />

Advertisment Manager:

package com.javarush.test.level27.lesson15.big01.ad;
import com.javarush.test.level27.lesson15.big01.ConsoleHelper;
/**
 * Created by user on 17.03.2015.
 */
public class AdvertisementManager
{
    private final AdvertisementStorage storage;
    private int timeSeconds;
    public AdvertisementManager(int timeSeconds)
    {
        this.timeSeconds = timeSeconds;
        storage = AdvertisementStorage.getInstance();
    }
    public void processVideos()
    {
        ConsoleHelper.writeMessage("processVideos method calling");
    }
}

Tablet:

package com.javarush.test.level27.lesson15.big01;
import com.javarush.test.level27.lesson15.big01.ad.AdvertisementManager;
import com.javarush.test.level27.lesson15.big01.kitchen.Order;
import java.io.IOException;
import java.util.Observable;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
 * Created by user on 16.03.2015.
 */
public class Tablet extends Observable
{
    private final int number;
    public static Logger logger = Logger.getLogger(Tablet.class.getName());
    public Tablet(int number)
    {
        this.number = number;
    }
    public void createOrder()
    {
        try
        {
            Order order = new Order(this);
            System.out.println(order);
            if (!order.isEmpty())
            {
                AdvertisementManager manager = new AdvertisementManager(order.getTotalCookingTime());
                manager.processVideos();
                setChanged();
                notifyObservers(order);
            }
        }
        catch (IOException e)
        {
            logger.log(Level.SEVERE, "Console is unavailable.");
        }
    }
    @Override
    public String toString()
    {
        return "Tablet{" +
                "number=" + number +
                '}';
    }
}
  • ,

level19.lesson10.bonus01;

Здравствуйте, помогите пожалуйста яварашовцы. Пропускал все тесты, которые только находил. Единственное, чего нету это проверки на валидность строк в файлах, но по форуму понятно, что данные всегда валидны и соблюдают правило «Операции ADDED и REMOVED не могут идти подряд, они всегда разделены SAME». Мне бы хотя бы строчки при которых ошибка) Заранее спасибо.

package com.javarush.test.level19.lesson10.bonus01;

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

/* Отслеживаем изменения
Считать в консоли 2 имени файла - file1, file2.
Файлы содержат строки, file2 является обновленной версией file1, часть строк совпадают.
Нужно создать объединенную версию строк, записать их в список lines
Операции ADDED и REMOVED не могут идти подряд, они всегда разделены SAME
Пример:
[Файл 1]
строка1
строка2
строка3

[Файл 2]
строка1
строка3
строка4

[Результат - список lines]
SAME строка1
REMOVED строка2
SAME строка3
ADDED строка4
*/

public class Solution {
    public static List<LineItem> lines = new ArrayList<LineItem>();

    public static void main(String[] args) throws Exception{
        BufferedReader reader = new BufferedReader( new InputStreamReader( System.in));
        String fileName1 =reader.readLine();
        String fileName2 = reader.readLine();
        reader.close();

        ArrayList<String> list1 = new ArrayList<>();
        ArrayList<String> list2 = new ArrayList<>();

        BufferedReader reader1 = new BufferedReader(new FileReader(fileName1));
        list1.add(reader1.readLine().substring(1));
        while (reader1.ready())
        {
            list1.add(reader1.readLine());
        }
        reader1.close();
        BufferedReader reader2 = new BufferedReader(new FileReader(fileName2));
        list2.add(reader2.readLine().substring(1));
        while (reader2.ready())
        {
            list2.add(reader2.readLine());
        }
        reader2.close();

        int j = 0;
        int i = 0;
        while (true)
        {
                 if (list1.get(i).equals(list2.get(j)))
                {
                    lines.add(new LineItem(Type.SAME, list1.get(i)));
                    j++;
                    i++;
                } else if (j < list2.size() - 1 && list1.get(i).equals(list2.get(j + 1)))
                {
                    lines.add(new LineItem(Type.ADDED, list2.get(j)));
                    j++;
                } else if (i < list1.size() - 1 && list1.get(i + 1).equals(list2.get(j)))
                {
                    lines.add(new LineItem(Type.REMOVED, list1.get(i)));
                    i++;
                }
                else

                  break;

                if (i== list1.size() && j < list2.size())
                {
                    for (;j< list2.size();j++)
                      lines.add(new LineItem(Type.ADDED, list2.get(j)));

                }

                if (j == list2.size() && i < list1.size())
                {
                    for (; i<list1.size(); i++)
                      lines.add(new LineItem(Type.REMOVED, list1.get(i)));

                }

                if (i == list1.size() && j == list2.size())
                    break;

        }


        for (LineItem x : lines)
            System.out.println(x.type+" "+ x.line);

    }


    public static enum Type {
        ADDED,        //добавлена новая строка
        REMOVED,      //удалена строка
        SAME          //без изменений
    }

     static class LineItem {
        public Type type;
        public String line;

        public LineItem(Type type, String line) {
            this.type = type;
            this.line = line;
        }
    }
}

  • ,

level18.lesson10.bonus03

Не принемается((

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

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

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

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

public class Solution {
    static List<String> stringList;
    public static void main(String[] args) {
        stringList = new ArrayList<>();
        String fileName = "";
        try (BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in))) {
            fileName = consoleReader.readLine();
        } catch (IOException e) {/* NOP */}

        try (BufferedReader fileReader = new BufferedReader(new FileReader(fileName))) {
            if (args.length >= 2){
                int paramID = Integer.parseInt(args[1]);
                while (fileReader.ready()){
                    String line = fileReader.readLine();
                    if (line.length() < 8) {return;}
                    if (Integer.parseInt(line.substring(0, 8).trim()) == paramID){
                        if (args[0].equals("-u") && args.length > 5){
                            String idStr = line.substring(0, 8);
                            String productName = "";
                            for (int i = 2; i < args.length - 2; i++){
                                productName += args[i] + " ";
                            }
                            productName = productName.substring(0, productName.length() - 1);
                            productName = String.format("%-30.30s", productName);
                            try {
                                Double price = Double.parseDouble(args[args.length -2]);
                                Integer quantity = Integer.parseInt(args[args.length - 1]);
                                if (args[args.length -2].length() > 8 || args[args.length -1].length() > 4){
                                    throw new NumberFormatException();
                                }
                            } catch (NumberFormatException e){
                                return;
                            }
                            String priceStr = args[args.length -2];
                            priceStr = String.format("%-8.8s",priceStr);
                            String quantityStr = args[args.length -1];
                            quantityStr = String.format("%-4.4s", quantityStr);
                            line = idStr + productName + priceStr + quantityStr;
                        } else if (args[0].equals("-d") && args.length >= 2){
                            continue;
                        }
                    }
                    stringList.add(line);
                }
            }
        } catch (FileNotFoundException e) {
            /* NOP */
        } catch (IOException e) {
           /* NOP */
        }

        try (BufferedWriter fileWriter = new BufferedWriter(new FileWriter(fileName))) {
            Iterator<String> iterator = stringList.iterator();
            while (iterator.hasNext()) {
                fileWriter.write(iterator.next());
                if (iterator.hasNext()){
                    fileWriter.newLine();
                }
            }
        } catch (FileNotFoundException e) {
            /* NOP */
        } catch (IOException e) {
            /* NOP */
        }
    }
}
  • ,

level17.lesson10.bonus01 беда с задачей

при -i 1 выводит Петров Петр MALE 34-Feb-2015, остальное проверил
package com.javarush.test.level17.lesson10.bonus01;

import java.text.SimpleDateFormat;
import java.util.*;

/* CRUD
CrUD - Create, Update, Delete
Программа запускается с одним из следующих наборов параметров:
-c name sex bd
-u id name sex bd
-d id
-i id
Значения параметров:
name - имя, String
sex - пол, "м" или "ж", одна буква
bd - дата рождения в следующем формате 15/04/1990
-с  - добавляет человека с заданными параметрами в конец allPeople, выводит id (index) на экран
-u  - обновляет данные человека с данным id
-d  - производит логическое удаление человека с id
-i  - выводит на экран информацию о человеке с id: name sex (м/ж) bd (формат 15-Apr-1990)

id соответствует индексу в списке
Все люди должны храниться в allPeople
Используйте Locale.ENGLISH в качестве второго параметра для SimpleDateFormat

Пример параметров: -c Миронов м 15/04/1990
*/

public class Solution {
    public static List<Person> allPeople = new ArrayList<Person>();
    static {

        allPeople.add(Person.createMale("Иванов Иван", new Date()));  //сегодня родился    id=0
        allPeople.add(Person.createMale("Петров Петр", new Date()));  //сегодня родился    id=1
    }

    public static void main (String[] args) throws Exception{
    Person person = null;
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("DD/MM/yyyy", Locale.ENGLISH);
        if(args[0].equals("-c")) {
            if(args.length<4)return;
            if (args.length ==5){
                args[1]=args[1]+args[2];args[3]=args[4];
            }
            if (args.length ==6){//какой-то пень ляпнул, что проверку лучше сделать до имени из 4-х слов!!!????
                args[1]=args[1]+args[2]+args[3];args[3]=args[4];args[4]=args[5];
            }
                if(args.length==7) {
                    args[1]=args[1]+args[2]+args[3]+args[4];args[4]=args[5];args[5]=args[6];
                }//-c name sex bd

    if (args[2].equals("м"))
        person = Person.createMale(args[1], simpleDateFormat.parse(args[3]));
    if (args[2].equals("ж")) person = Person.createFemale(args[1], simpleDateFormat.parse(args[3]));
    allPeople.add(person);
    System.out.println(allPeople.indexOf(person));


        }//start here - начни тут

        else if (args[0].equals("-u")) {
            int id = Integer.parseInt(args[1]);
            person = allPeople.get(id);
            person.setName(args[2]);
            if (args[3].equals("м"))
                person.setSex(Sex.MALE);
            else
                person.setSex(Sex.FEMALE);
            person.setBirthDay(simpleDateFormat.parse(args[4]));
            allPeople.set(id, person);
        }

       else if(args[0].equals("-d")) {
            person = Person.createFemale(null, null);
            person.setSex(null);
            allPeople.set(Integer.parseInt(args[1]), person);
        }

       else if(args[0].equals("-i")) {
            person=allPeople.get(Integer.parseInt(args[1]));
          simpleDateFormat = new SimpleDateFormat("DD-MMM-yyyy", Locale.ENGLISH);
            System.out.print(person.getName()+" "+person.getSex()+" "+simpleDateFormat.format(person.getBirthDay()));
        }
    }
}

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

level07.lesson12.home03

Только один вопрос: почему выводит maximum равный 0, если проверять на отрицательных числах?

/* Максимальное и минимальное числа в массиве
Создать массив на 20 чисел. Заполнить его числами с клавиатуры. Найти максимальное и минимальное числа в массиве.
Вывести на экран максимальное и минимальное числа через пробел.
*/
public class Solution
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        int  maximum;
        int  minimum;

        //Напишите тут ваш код
        int[] arr = new int[8];
        maximum = arr[0];
        minimum = arr[0];
        for(int i = 0; i < arr.length; i++)
        {
            arr[i] = Integer.parseInt(reader.readLine());

            if (arr[i] < minimum) minimum = arr[i];
            else if (arr[i] > maximum) maximum = arr[i];

        }
        System.out.print(maximum + " " + minimum);

    }

}
  • ,

level07.lesson09.task01

Ребят, укажите ошибку. Не проходит тестирование.
*Спасибо
/* Три массива
1. Введи с клавиатуры 20 чисел, сохрани их в список и рассортируй по трём другим спискам:
Число делится на 3 (x%3==0), делится на 2 (x%2==0) и все остальные.
Числа, которые делятся на 3 и на 2 одновременно, например 6, попадают в оба списка.
2. Метод printList должен выводить на экран все элементы списка  с новой строки.
3. Используя метод printList выведи эти три списка на экран. Сначала тот, который для x%3, потом тот, который для x%2, потом последний.
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        //add your code her
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
       int count = 5; // исправить на 20

        ArrayList<Integer> arrAll = new ArrayList<Integer>();  //полный список
        ArrayList<Integer> arr0 = new ArrayList<Integer>();    //не кратный ничему дельному
        ArrayList<Integer> arr2 = new ArrayList<Integer>();    //кратный 2-м
        ArrayList<Integer> arr3 = new ArrayList<Integer>();    //кратный 3-м

        for(int i = 0; i < count; i++)
        {
            arrAll.add(Integer.parseInt(reader.readLine()));

        }
        for(int j = 0; j < arrAll.size(); j++){
            if ((arrAll.get(j) % 3 == 0) && (arrAll.get(j) % 2 == 0))
            {
                arr3.add(arrAll.get(j));
                arr2.add(arrAll.get(j));
            }
            else
        if(arrAll.get(j) % 3 == 0)
        {
            arr3.add(arrAll.get(j));
        }
            else
        {
            if(arrAll.get(j) % 2 == 0)
            {
                arr2.add(arrAll.get(j));
            }
            else
            {
                arr0.add(arrAll.get(j));
            }
        }
            printList(arr3);

            printList(arr2);

            printList(arr0);
        }
        }


    public static void printList(List<Integer> list) {
        //add your code here

        for (Integer x: list) System.out.println(x);

    }
}

package com.javarush.test.level16.lesson10.task02;

Весь день ломаю голову над задачей, не могу понять в чем моя ошибка.
Кто подскажет?
Отсчет на гонках
1. Разберись, что делает программа.
2. Реализуй логику метода run так, чтобы каждую секунду через пробел
выдавался отсчет начиная с countSeconds до 1, а потом слово [Марш!] (см примеры).
3. Если нить работает 3.5 секунды и более, прерви ее методом interrupt и внутри нити выведи в консоль слово [Прервано!].
Пример для countSeconds=4 : [4 3 2 1 Прервано!]
4. Если нить работает менее 3.5 секунд, она должна завершиться сама.
Пример для countSeconds=3 : [3 2 1 Марш!]
PS: метод sleep выбрасывает InterruptedException.



public class Solution {
    public static volatile int countSeconds = 3;

    public static void main(String[] args) throws InterruptedException {
        RacingClock clock = new RacingClock();
              //add your code here - добавь код тут

    }

    public static class RacingClock extends Thread {
        public RacingClock() {
            start();
        }

        public void run() {
            //add your code here - добавь код тут
            Thread current = Thread.currentThread();
            int sec = 0;
            while(!current.isInterrupted() && countSeconds > 0){
                System.out.print(countSeconds-- + " ");
                try{
                    Thread.sleep(1000);

                    sec++;
                    if(sec > 3){
                       // Thread.sleep(1);
                        current.interrupt();
                    }

                   // Thread.sleep(0);
                }
                catch (InterruptedException e){
                    System.out.print(String.format("%s", "Прервано!"));
                  current.interrupt();
                }
            }
            if(countSeconds == 0 && !current.isInterrupted()){
                System.out.print("Марш!");
            }
        }

        }
    }