• ,

level22.lesson18.big01 - Задание 17 - Неизвестная ошибка при работе с сервером

Всем здравствуйте! При отправке на сервер level22.lesson18.big01 — Задание 17 выдаёт «Неизвестная ошибка при работе с сервером» хотя по условию:

Задание 17
Я тут немножечко подправил код.
Но в целом — отлично.
Запускаем и наслаждаемся тетрисом.
P.S.
Не забудь отрегулировать высоту консоли

По логике делать ничего не надо, нажимаю отправить, а сервер возвращает неизвестную ошибку. Никаких посторонних файлов в папке с заданием нет. Может кто знает в чём проблем и как решить. Заранее спасибо.
  • ,

level06.lesson11.bonus02 нивкакую не принимает

Помогите уже хз что делать, не принимает и все.
Читал, что нужно, что бы порядок был отец->мать, поменял уже все на отца и все равно не принимает(
в «else» пробовал также —
", father is " + father.name + ", mother is " + mother.name

  • ,

level10.lesson11.home09

Не могу понять, в чём дело

package com.javarush.test.level10.lesson11.home09;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

/* Одинаковые слова в списке
Ввести с клавиатуры в список 20 слов. Нужно подсчитать количество одинаковых слов в списке.
Результат нужно представить в виде словаря Map<String, Integer>, где первый параметр – уникальная строка,
а второй – число, сколько раз данная строка встречалась в списке.
Вывести содержимое словаря на экран.
В тестах регистр (большая/маленькая буква) влияет на результат.
*/

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

        ArrayList<String> words = new ArrayList<String>();
        for (int i = 0; i < 20; i++)
        {
            words.add(reader.readLine());
        }

        Map<String, Integer> map = countWords(words);

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

    public static Map<String, Integer> countWords(ArrayList<String> list)
    {
        HashMap<String, Integer> result = new HashMap<String, Integer>();

        result.put(list.get(0), 1);

        for (String s: list)
        {
            for (Map.Entry<String, Integer> pair: result.entrySet())
            {
                if (s.equals(pair.getKey()))
                    pair.setValue(pair.getValue() + 1);
                else
                    result.put(s, 1);
            }
        }

        return result;
    }

}
  • ,

Java. Справочное руководство для интервью - Часть 1. (Перевод статьи)

Исходная статья находится по адресу:
http://www.javacodegeeks.com/2014/02/java-interview-reference-guide-part-1.html

Опубликовал: Nitin Kumar, в Core Java, 3 февраля 2014 г

Java. Объектно-Ориентированная концепция.


Java основывается на объектно-ориентированной концепции, которая дает более высокий уровень абстракции для решения любой проблемы реальным способом.

Объектно-Ориентированный подход концептуализирует решение проблемы в объектах реального мира, которые проще повторно использовать в приложениях. Например: стул, вентилятор, собака, компьютер и т.д.

В Java, класс — это документация, шаблон или прототип, который определяет общее поведение объектов того же вида. Экземпляр является реализацией определенного класса, и все экземпляры класса имеют аналогичные свойства, как представлено в описании класса. Например, вы можете определить класс, который называется Дом, с числом комнат, как атрибутом, и создать объекты: дом с 2 комнатами, дом с 3 комнатами и т.д.

Преимущества:

Ниже перечислено несколько преимуществ разработки объектно-ориентированного программного обеспечения:

  • Меньше затрат на обслуживание, главным образом благодаря модульности.
  • Код легче повторно использовать за счет таких функций, как наследование, что как следствие ускоряет разработку.
  • Повышается надежность и гибкость кода.
  • Код легче понять, это обусловлено моделированием реального мира.
  • Лучшая абстракция на объектном уровне.
  • Уменьшение сложности перехода от одной стадии разработки к другой.

Существуют четыре основных понятия ООП:

  • Инкапсуляция
  • Наследование
  • Полиморфизм
  • Абстракция

Инкапсуляция:

Инкапсуляция представляет собой правила для других объектов, которые указывают, какие элементы скрыты, а какие открыты для доступа другим объектам. В Java мы используем модификатор доступа private для того, чтобы скрыть метод и ограничить доступ к переменной из внешней среды. Java также предусматривает различные модификаторы доступа, такие как public, который устанавливается по-умолчанию, protected и private, которые используются для ограничения видимости на различных уровнях, но конечная цель инкапсуляции — это скрыть те элементы, которые не должны изменяться. На практике лучше всего, когда класс имеет только одну причину для изменения, и инкапсуляция реализует принципы проектирования этой «одной причины».

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

Преимущества:
  • ,

Как писать методы эффективно (перевод статьи)

Исходная статья лежит по адресу:
http://www.javacodegeeks.com/2015/09/how-to-write-methods-efficiently.html#download

учебник

Опубликовано: Andrey Redko ( Андреем Редько) в Core Java (Java Ядро) 18 сентября 2015г

Эта заметка — часть курса Advanced Java (Продвинутый Java.) нашей академии
Этот курс создан, чтобы помочь вам сделать использование Java более эффективным. Здесь обсуждаются более сложные темы, как создание объектов, распараллеливание, сериализация, рефлексия и многое другое. Эти знания будут гидом для вашего путешествия к вершинам мастерства Java.

Оглавление курса
1. Введение
2. Сигнатура методов
3. Тело метода
4. Перегрузка метода
5. Переопределение метода
6. Встраивание
7. Рекурсия
8. Ссылки метода
9. Неизменность
10. Документирование метода
11. Параметры метода и возвращаемые значения
12. Метод как точка входа в приложение
13. Что дальше
14. Загрузка исходного кода

1. Введение
В этом разделе учебника мы собираемся потратить некоторое время на обсуждение разных аспектов, связанных с проектированием и реализацией методов в Java. В предыдущей части учебника можно было убедиться, что написать методы на Java — очень просто, однако есть много вещей, которые могут сделать ваши методы более читаемыми и эффективными.

2. Сигнатуры методов
Как вы уже знаете, Java — это объектно-ориентированный язык. По существу, каждый метод Java относится к какой-то части класса (или к самому классу в случае статистического метода). Он имеет правила видимости (или доступности), может быть объявлен абстрактным или финальным и так далее. Однако возможно наиболее важная часть метода — это его сигнатура: тип возвращаемого значения и аргументов, плюс список проверяемых исключений реализации каждого метода, который может быть выброшен (но эта часть раньше использовалась не часто, и еще менее часто в наши дни). Начнем с маленького примера.
1	public static void main( String[] args ) {
2	    // Some implementation here
3	}

Метод main принимает массив строк только как аргумент args и ничего не возвращает. Это могло бы быть очень приятно — делать все методы такими простыми как main. Но в реальности сигнатура метода может стать нечитаемой. Давайте взглянем на следующий пример:
1	public void setTitleVisible( int lenght, String title, boolean visible ) {
2	    // Some implementation here
3	}

Первое что здесь заметно, что условные обозначения изначально используются в названиях методов Java, например setTitleVisible.Имя хорошо подобрано и пытается описать, что в методе полагается сделать.
Второе, имена аргументов говорят (или по крайней мере намекают) насчет их цели. Это очень важно найти правильные, толковые имена для аргументов метода, вместо int i, String s, boolean f(в очень редких случаях это, однако, имеет смысл).
Третье, метод имеет только три аргумента. Хотя Java имеет гораздо больший предел разрешенного числа аргументов, настоятельно рекомендовано не превышать количество аргументов больше 6. Выход за эти рамки делает сигнатуру тяжело понимаемой.
С тех пор как была выпущена Java 5, методы могут иметь различный список аргументов одинакового типа (названный varargs — переменные аргументы) и использовать специальный синтаксис, например:
1	public void find( String … elements ) {
2	    // Some implementation here
3	}

Внутренне, компилятор Java конвертирует переменные аргументы в массив соответствующих типов и, таким образом, переменные аргументы могут быть приняты для реализации метода.
Интересно, Java также разрешает декларировать varargs используя параметры типа generic. Однако, потому что тип аргумента неизвестен, компилятор Java хочет быть уверенным что varargs используются правильно и советует методы final снабжать комментариями с пометкой @SafeVarargs(более детальная информация содержится в части 5 учебника, How and when to use Enums and Annotations (как и когда мы используем Перечисления и Комментарии). Например:

Решение задач

Здравствуйте.
Подскажите, пожалуйста, что нужно сделать (какие задания решить),
чтобы перейти к следующему уроку? Я нахожусь на 10 уровне, и далее не могу перейти
к следующему уроку. У меня не решена только 1 задача (на 2 балла), для перехода требуется
5 баллов, а заданий для решения больше нет, кроме этой одной задачи.
В условиях прохождения курса 10 первых уровней даны бесплатно.

level05.lesson07.task02

Мой мозг отказывается дальше работать. Написал код, запустил задачу — выдаёт сообщение, что не может найти метод main(), но тестирование проходит. Написал метод main() — программа работает неправильно, хотя всё выводится

level07.lesson12.bonus03

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int[] array = new int[20];
        for (int i = 0; i<array.length; i++)
        {
            array[i] = Integer.parseInt(reader.readLine());
        }

        sort(array);

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

    public static void sort(int[] array)
    {
        //int peso = 0;
        for (int i = array.length - 1; i >= 2; i--) {
            boolean sorted = true;

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

                if (array[j] < array[j+1]) {
                    int temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                    sorted = false;
                }
            }
            if(sorted) {
                break;
            }
        }
    }
}


Сортирует правильно но тест не проходит! Подскажите пожалуйста в чем дело.

Среднее такое среднее Ввести с клавиатуры три числа, вывести на экран среднее из них. Т.е. не самое большое и не самое маленькое.

/* Среднее такое среднее
Ввести с клавиатуры три числа, вывести на экран среднее из них. Т.е. не самое большое и не самое маленькое.
*/

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

import static com.javarush.test.level02.lesson08.task03.Solution.min;
import static sun.swing.MenuItemLayoutHelper.max;

public class Solution
{
public static void main(String[] args) throws Exception
{
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String n1 = bufferedReader.readLine();
String n2 = bufferedReader.readLine();
String n3 = bufferedReader.readLine();
int nn1 = Integer.parseInt(n1);
int nn2 = Integer.parseInt(n2);
int nn3 = Integer.parseInt(n3);
if (nn1>nn2 && nn2 >nn3 || nn3>nn2 && nn2>nn1){
System.out.println(nn2);}
if (nn2>nn3 && nn3>nn1 || nn1>nn3 && nn3>nn2){
System.out.println(nn3);}
if (nn3>nn1 && nn1>nn2 || nn2>nn1 && nn1>nn3){
System.out.println(nn1);}
}
}
не проходит тестирование, но работает привильно

level13.lesson11.bonus01

Всем привет, не могу понять что не нравится серверу, программа работает, но не проходит проверку

package com.javarush.test.level13.lesson11.bonus01;

/* Сортировка четных чисел из файла
1. Ввести имя файла с консоли.
2. Прочитать из него набор чисел.
3. Вывести на консоль только четные, отсортированные по возрастанию.
Пример ввода:
5
8
11
3
2
10
Пример вывода:
2
8
10
*/

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Solution
{
    public static void main(String[] args) throws FileNotFoundException, IOException
    {
        // напишите тут ваш код
        Scanner sc = new Scanner(System.in);
        InputStream in = new FileInputStream(sc.next());
        Scanner fin = new Scanner(in);
        ArrayList<Integer> list = new ArrayList<Integer>();

        while (fin.hasNextInt())
        {
            list.add(fin.nextInt());
        }
        Collections.sort(list);
        for (Integer i : list)
        {
            if (i % 2 == 0)
            {
                System.out.println(i);
            }
        }
        sc.close();
        in.close();
        fin.close();
    }
}
  • ,

level27.lesson06.task02 - Определяем порядок захвата монитора.

Насколько я понял, в этой задаче в методе isNormalLockOrder мы должны вернуть true, если в методе someMethodWithSynchronizedBlocks firstLock == obj1 и secondLock == obj2, и false, если наоборот?
В таком случае, как вообще возможно обратиться из одного метода к переменным другого метода? Как-то через рефлексию что-ли?

В main в тредах есть еще комментарии вроде //expected boolean b и //expected boolean !b. Тут я просто не могу понять, что вообще за переменная b и как надо выводить результат на экран.

Кто решил, намекните, что я не так понял из условия. Заранее спасибо!