• ,

package com.javarush.task.task17.task1711;

Всем привет! Необходима помощь в решении задачи. Новый валидатор в данном случае доволен всем, кроме одного пункта: «Каждый case оператора switch должен иметь блок синхронизации по allPeople». Но у меня же есть блок синхронизации по allPeople. Как тут быть? :)
Снизу скрин валидатора!

  • ,

level15.lesson06.task01

Задание решил и собственно вопрос
public static class JuniorJavaDev extends JavaDev{ // тут как бы наследование не нужно но проходит и так и так
        JavaDev zapp = new JavaDev();
        JavaDev hubert = new JavaDev();

        String askZapp(String question) {
            return zapp.answerQuestion(question);
        }

        String askHubert(String question) {
            return hubert.answerQuestion(question);
        }

}

Как я понимаю наследование не нужно из за того что мы создаем объекты JavaDev и с ними работаем.
Наследование убирается из за связи Has-a или из за чего может есть ссылки на ресурсы где это нормально объясняется?
  • ,

level18.lesson05.task03

Народ, подскажите, пожалуйста, что тут может быть не так. В файлы все пишется как надо, отрабатывает и для четных байт, и для нечетных, для пустого первого файла тоже все работает. Все потоки закрыты. Что тут не так?

package com.javarush.test.level18.lesson05.task03;

/* Разделение файла
Считать с консоли три имени файла: файл1, файл2, файл3.
Разделить файл1 по следующему критерию:
Первую половину байт записать в файл2, вторую половину байт записать в файл3.
Если в файл1 количество байт нечетное, то файл2 должен содержать бОльшую часть.
Закрыть потоки. Не использовать try-with-resources
*/

import java.io.*;

public class Solution {
    public static void main(String[] args) throws IOException {

//        чтение файлов с консоли
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        InputStream inputStream = new FileInputStream(reader.readLine());
        FileOutputStream outputStream1 = new FileOutputStream(reader.readLine());
        FileOutputStream outputStream2 = new FileOutputStream(reader.readLine());

//        определяем, сколько всего символов, заносим их в массив buffer
        int count = inputStream.available();
        int countFirstOutput, countSecondOutput;
        byte[] buffer = new byte[inputStream.available()];
        inputStream.read(buffer);

        if (count > 0) {
            if (count % 2 == 0) {
                countFirstOutput = count / 2;
                countSecondOutput = (countFirstOutput / 2) + 1;
            } else {
                countFirstOutput = count / 2;
                countSecondOutput = (countFirstOutput / 2) + 2;
            }
        } else {

//            выполняется в том случае, если первый файл пустой
            countFirstOutput = 0;
            countSecondOutput = 0;
        }

//        пишем в потоки
        outputStream1.write(buffer, 0, countFirstOutput);
        outputStream2.write(buffer, countFirstOutput, countSecondOutput);

//        закрытие потоков
        reader.close();
        inputStream.close();
        outputStream1.close();
        outputStream2.close();

    }
}
  • ,

Работа с компилятором в командной строке

Всем привет! Сегодня начал читать книгу «Изучаем Java», наткнулся на 1 практическое задание и застрял на нем. В частности: последняя (4) картинка: не понимаю, как нужно «запустить JVM»?
Буду очень благодарен за разъяснения! Заранее спасибо.
Фрагмент книги "Изучаем Java"
  • ,

level05.lesson12.bonus03

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int a = Integer.parseInt(reader.readLine());
        int maximum = 0;
        int b;
        if (a>0)
        {
            for (int i = 1; i <= a; i++)
            {
                b = Integer.parseInt(reader.readLine());
                if (maximum < b) maximum = b;
            }
            System.out.println(maximum);
        }
    }
}


Ребята яверы, помогите. В чём кроется ошибка? Всё работает нормально, ответы выдаёт верные, но код не принимается. Что поменять?

level08.lesson11.home06

/* Вся семья в сборе
1. Создай класс Human с полями имя (String), пол (boolean), возраст (int), дети (ArrayList<Human>).
2. Создай объекты и заполни их так, чтобы получилось: два дедушки, две бабушки, отец, мать, трое детей.
3. Вывести все объекты Human на экран.
*/

import java.util.*;

public class Solution
{
    public static void main(String[] args)
    {
        //пункт 2
        Human grandFather1 = new Human("Александр", true, 60, new ArrayList<Human>(Arrays.asList(father)));
        Human grandFather2 = new Human("Михаил", true, 65, new ArrayList<Human>(Arrays.asList(mother)));
        Human grandMother1 = new Human("Мария", false, 55, new ArrayList<Human>(Arrays.asList(father)));
        Human grandMother2 = new Human("Наталья", false, 60, new ArrayList<Human>(Arrays.asList(mother)));
        Human father = new Human("Евгений", true, 35, new ArrayList<Human>(Arrays.asList(child1, child2, child3)));
        Human mother = new Human("Евгения", false, 35, new ArrayList<Human>(Arrays.asList(child1, child2, child3)));
        Human child1 = new Human("Саша", false, 8);
        Human child2 = new Human("Ирина", false, 10);
        Human child3 = new Human("Андрей", true, 15);
        System.out.println(grandFather1);
        System.out.println(grandFather2);
        System.out.println(grandMother1);
        System.out.println(grandMother2);
        System.out.println(father);
        System.out.println(mother);
        System.out.println(child1);
        System.out.println(child2);
        System.out.println(child3);

    }

    public static class Human
    {
        //пункт 1
        String name;
        boolean sex;
        int age;
        ArrayList<Human> children;

        public Human(String name, boolean sex, int age){
            this.name = name;
            this.sex = sex;
            this.age = age;
        }
        public Human(String name, boolean sex, int age, ArrayList<Human> children){
            this.name = name;
            this.sex = sex;
            this.age = age;
            this.children = children;
        }

        public String toString()
        {
            String text = "";
            text += "Имя: " + this.name;
            text += ", пол: " + (this.sex ? "мужской" : "женский");
            text += ", возраст: " + this.age;

            int childCount = this.children.size();
            if (childCount > 0)
            {
                text += ", дети: "+this.children.get(0).name;

                for (int i = 1; i < childCount; i++)
                {
                    Human child = this.children.get(i);
                    text += ", "+child.name;
                }
            }

            return text;
        }
    }

}

не работает вот это место
Human grandFather1 = new Human("Александр", true, 60, new ArrayList<Human>(Arrays.asList(father)));
        Human grandFather2 = new Human("Михаил", true, 65, new ArrayList<Human>(Arrays.asList(mother)));
        Human grandMother1 = new Human("Мария", false, 55, new ArrayList<Human>(Arrays.asList(father)));
        Human grandMother2 = new Human("Наталья", false, 60, new ArrayList<Human>(Arrays.asList(mother)));
        Human father = new Human("Евгений", true, 35, new ArrayList<Human>(Arrays.asList(child1, child2, child3)));
        Human mother = new Human("Евгения", false, 35, new ArrayList<Human>(Arrays.asList(child1, child2, child3)));

голову сломал, не понимаю, как правильно добавить элементы в список при инициации
объясните пожалуйста, что не так делаю

level05.lesson12.home05;

/* Вводить с клавиатуры числа и считать их сумму
Вводить с клавиатуры числа и считать их сумму, пока пользователь не введёт слово «сумма». Вывести на экран полученную сумму.
*/
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Solution
{
public static void main(String[] args) throws Exception
{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int summ = 0;
for (; true; )
{
String text = bf.readLine();
if (text.equals(«сумма»))

System.out.println(summ);
else
{
int num = Integer.parseInt(text);
summ = summ + num;
}

}
}
}


в ИДЕА вроде проходит все мои проверки, но проверку сервера пройти не могу. Подскажите что упустил? Может break; куда то засунуть надо?
  • ,

level07.lesson09.task03

   Добрый день, уважаемые. Сижу над очередной задачей по ArrayList, и ещё больше понимаю, что абсолютно не понимаю как же в памяти происходят все эти процессы. Для того чтобы выразить свою мысль, я процитирую условие задачи, и как я понимаю, как оно должно работать. Условие задачи:
1. Создай список из слов «мама», «мыла», «раму».
2. После каждого слова вставь в список строку, содержащую слово «именно».
   Значит допустим, есть некий внутренний массив. Изначально мы вносим туда три слова: мама, мыла, раму (условно s1, s2, s3). Соответственно: s1 встаёт на ячейку в массиве «0», s2 — «1», и s3 на «2». По условию задачи нам надо вставить после каждого слова «именно». Как я понимаю, чтобы осуществить это, нам надо как бы «раздвинуть слова в массиве». То есть, s2 поставить в ячейку «2», а s3 в ячейку «4» (как на скриншоте).

Соответственно этому, по-моему сам процесс происходит следующим образом:
  1. Берем данные из ячейки #1 и копируем её в ячейку #2
  2. Данные из ячейки #2 переносятся в ячейку #3
  3. Берем данные из ячейки #3 и копируем в ячейку #4
Теперь в ячейки #1, #3 и #5 вставляем слово «именно». Собственно это я попытался выполнить в программе вручную без цикла, чтобы понять как оно работает.

list.add(2, list.get(1));
        list.add(4, list.get(3));

        list.add(1, "именно");
        list.add(3, "именно");
        list.add(5, "именно");

Вывод этого:
мама
именно
мыла
именно
мыла
именно
раму
раму

Прошу разобраться как же сделать эту задачу, и почему именно так. Заранее благодарен.
P.S. приношу извинение за такое огромное объяснение.
P.P.S. бывают такие темы, когда ну ни в какую не доходит, хоть застрелись.

Выбор файлов по маске. Проблема с русской кодировкой

Решил написать программу на Java, которая должна отбирать файлы по маске и копировать их в специальную папку(путь заранее известен). Однако столкнулся с трудностями.
Читаю файл, смотрю является ли он директорией, если да то начинаю смотреть его внутреннюю структуру, если нет, проверяю удовлетворяет ли он моей маске.
.indexOf — метод который проверяет входит ли маска в имя директории или файла.
Когда тестировал на каталогах с файлами и папками названными на английском языке — проблем не было, однако когда перешел на русские — возникли проблемы. Считывая название файла(на русском) компьютер выпадает что-то вроде:
«DirList=” Єг«мвҐв ЎЁ§­Ґб  Ё ¬Ґ­Ґ¤¦¬Ґ­в 
DirList=” Єг«мвҐв Јг¬ ­Ёв а­ле ­ гЄ
DirList=Programmnew
DirList=Њ®ЎЁ«м­®бвм а Ў®в­ЁЄ®ў
DirList=Њ®ЎЁ«м­®бвм бв㤥­в®ў»

Вопрос, как это можно решить?
  • ,

level09.lesson11.home05 Загляни-помоги :) Спасибо

Подскажите на что следует обратить внимание, а результат у меня видает на кирилицу " [?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?]..."

* Гласные и согласные буквы
Написать программу, которая вводит с клавиатуры строку текста.
Программа должна вывести на экран две строки:
1. первая строка содержит только гласные буквы
2. вторая — только согласные буквы и знаки препинания из введённой строки.
Буквы соединять пробелом.

Пример ввода:
Мама мыла раму.
Пример вывода:
а а ы а а у
М м м л р м.
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String str = reader.readLine();
        //Масиви в які добавляємо відсортовані букви
        ArrayList<Character> vowel = new ArrayList<Character>();
        ArrayList<Character> notVowel = new ArrayList<Character>();

        //Введену строку перетворюємо в масив і відправляємо в метод isVowels для перевірки яка буква
        char[] Char = str.toCharArray();
        for (char c : Char) {
            if (isVowel©==true) {
                vowel.add©;
            }
            else notVowel.add©;
        }
       print(vowel);
        System.out.println(" ");
        print(notVowel);

    }

    public static void print (ArrayList<Character> c) {
        for(char d : c){
            System.out.print(c+" ");
        }
    }

    public static char[] vowels = new char[]{'а', 'я', 'у', 'ю', 'и', 'ы', 'э', 'е', 'о', 'ё'};

    //метод проверяет, гласная ли буква
    public static boolean isVowel(char c)
    {
        c = Character.toLowerCase©;  //приводим символ в нижний регистр - от заглавных к строчным буквам

        for (char d : vowels)   //ищем среди массива гласных
        {
            if (c == d)
                return true;
        }
        return false;
    }
}
  • ,

level05.lesson05.task02 Помогите пожалуйста :(

Реализовать метод fight
Реализовать метод boolean fight(Cat anotherCat):
реализовать механизм драки котов в зависимости от их веса, возраста и силы.
Зависимость придумать самому. Метод должен определять, выиграли ли мы (this) бой или нет,
т.е. возвращать true, если выиграли и false — если нет.
Должно выполняться условие:
если cat1.fight(cat2) = true, то cat2.fight(cat1) = false

У меня несколько вопросов (заранее спасибо добрые люди :) :

1) программа сработала нормально вивела «true», но проверку не прошла.
2) параметр (Cat anotherCat) ето такое правило написание параметра для взаимодействия обєктов?
3) почему когда пишем нужно писать ссилку на параметри обєкта Cat с помощью this.*
Код ниже
public class Cat
{
public String name;
public int age;
public int weight;
public int strength;
public static void main (String[] args) {
Cat cat1 = new Cat(10, 20, 30);
Cat cat2 = new Cat(5, 10, 15);
System.out.print (cat1.fight(cat2));
}

public Cat(int a, int w, int s)
{
this.age = a;
this.weight = w;
this.strength = s;
}

public boolean fight (Cat anotherCat)
{
//Напишите тут ваш код
int skillCat1 = this.age+this.weight+this.strength;
int skillCat2 = anotherCat.age+anotherCat.weight+anotherCat.strength;
if (skillCat1 > skillCat2) {
return true;
}
else {
return false;
}
}
}