• ,

Курс "Android Basic" от Google на русском языке

Предлагаем вашему вниманию курс «Разработка под Android для начинающих», созданный специалистами Google. (создателями Android и всего хорошего в мире ИТ) для платформы Udacity. По многочисленным просьбам студентов JavaRush мы перевели его на русский язык и оформили в виде квеста. Теперь он доступен абсолютно всем желающим изучить основы программирования для мобильных систем — javarush.ru/quests/QUEST_GOOGLE_ANDROID

курс Google Android

Сомневаетесь, что Android — весьма перспективная ветка программирования? А вот мы в этом уверены. И вот почему:

  • Около 90% пользователей смартфонов обладают устройствами на ОС Android
  • Android создан на базе Linux и собственной реализации виртуальной машины Java — проверенных и постоянно развивающихся технологий;
  • Android — операционная система не только для смартфонов и планшетов, но также телевизоров, фотоаппаратов, плееров, игровых консолей и даже электрочайников (и не только)!
  • Любой желающий может создать и поместить своё приложение в Play Store — официальный магазин для Android-устройств, если оно соответствует своду несложных правил и стандартов;
  • Порог вхождения в программирование под Android невысок. Особенно для Java-программистов.

Присоединяйтесь к курсу «Разработка под Android для начинающих» на JavaRush: Вы изучите основы Android и программирования на Java, и в процессе изучения создадите два простых, но вполне мощных Android-приложения!
  • ,

task15.task1504; Хелапани что ему не нравится не понимаю

public class Solution {
public static void main(String[] args) {
Listbooks = new LinkedList();
books.add(new Book.MarkTwainBook(«Tom Sawyer»));
books.add(new Book.AgathaChristieBook(«Hercule Poirot»));
System.out.println(books);
}

abstract static class Book {
private String author;

public Book(String author) {
this.author = author;
}

public abstract Book getBook();

public abstract String getTitle();

public String getOutputByBookType() {
String output = «output»;
if (getBook() instanceof Book.AgathaChristieBook) {
String agathaChristieOutput = author + ", " + getBook().getTitle() + " is a detective";
output = agathaChristieOutput;
} else if (getBook() instanceof Book.MarkTwainBook) {
String markTwainOutput = getBook().getTitle() + " book was written by " + author;
output = markTwainOutput;
}
return output;
}

public String toString() {
return getOutputByBookType();
}

public static class MarkTwainBook extends Book {
private String title;
private String name;

public MarkTwainBook(String title) {
super(«Mark Twain»);
this.title = title;
this.name = title;
}

@Override
public MarkTwainBook getBook() {
return Book.MarkTwainBook.this;
}

@Override
public String getTitle() {
return title;
}

public String getName() {
return name;
}
}

public static class AgathaChristieBook extends Book {
private String title;
private String name;

public AgathaChristieBook(String title) {
super(«Agatha Christie»);
this.title = title;
this.name = title;
}

@Override
public AgathaChristieBook getBook() {
return Book.AgathaChristieBook.this;
}

@Override
public String getTitle() {
return title;
}

public String getName() {
return name;
}
}

}
}
  • ,

Oracle снова судится с Google

Давным-давно, аж в 2007 году, компания Google представила Android. Вы, наверное, в курсе, что «зеленый робот» — близкий родственник нашей с вами любимой Java, а владеет всеми правами на неё компания Oracle. Только вот в 2007 году всё было не так: Java находилась в единоличном имуществе у совсем другой компании, а именно — у Sun Microsystems, своей родительницы. Надо сказать, Sun на тот момент была едва ли не крупнейшим апологетом Open Source и прочих элементов свободы, равенства и братства. Посему, её представители поздравили Google с запуском Android. Дескать, нам не жалко, пользуйтесь Java, от этого все только выигрывают.

google vs oracle
К сожалению, жить Sun оставалось недолго. В 2009 году эту чудесную компанию поглотил гигант Oracle вместе со всеми её изысканными софтварными технологиями и мудрёными серверами.

Oracle чужд какой-либо альтруизм, поэтому едва вспомнив об Android, новая хозяйка Java тут же подала на Google в суд с формулировкой «нарушение авторских и патентных прав на Java API».

Двухлетняя тяжба завершилась в 2012 году победой Google. Самый гуманный суд в мире счёл, что структура, последовательность и организация API не подлежат копирайту в принципе.

Но Oracle не сдается просто так, и подаёт апелляцию. В 2014 году суд передумал, и решил, что структура, последовательность и организация API всё-таки подлежат копирайту, однако использование может подпадать под fair use. Эта формулировка провоцирует новый судебный процесс. Закончился он в 2016 году тем, что всё-таки признали в случае с Android fair use.

И вот, угадайте, что произошло в феврале 2017 года? Правильно, Oracle снова подаёт апелляцию. Делаем ставки, господа!
  • ,

level26.lesson15.big01; Задание 11

Здравствуйте! Тонну материала пересмотрел, не могу понять в чем беда. Кто может помочь?
Задание 11
Поздравляю, ты реализовал WithdrawCommand! Основной функционал завершен. Дальше можно допиливать и наводить красоту.
Реализуем одну плюшку. Можно и без нее, но с ней — красивее.
Это верификация кредитной карты пользователя. Нет, никакого API сторонних либ не будет. Только консольная обработка.

Итак, назовем эту операцию LOGIN и сделаем для нее команду.
1. Добавить в операции LOGIN с ординал=0
2. Запретим пользователю выбирать эту операцию из списка.
В единственном методе для поиска операций запретим доступ по ординал — бросим IllegalArgumentException.
3. Создадим LoginCommand по аналогии с другими командами, в котором захардкодим номер карточки с пином
123456789012 и 1234 соответственно.
4. Реализуйте следующую логику для команды LoginCommand:
4.1. Пока пользователь не введет валидные номер карты и пин — выполнять следующие действия
4.2. Запросить у пользователя 2 числа — номер кредитной карты, состоящий из 12 цифр, и пин — состоящий из 4 цифр
4.3. Вывести юзеру сообщение о невалидных данных, если они такими являются.
4.4. Если данные валидны, то проверить их на соответствие захардкоженным (123456789012 и 1234).
4.5. Если данные в п. 4.4. идентифицированы, то сообщить, что верификация прошла успешно.
4.6. Если данные в п. 4.4. НЕ идентифицированы, то вернуться к п.4.1.
class LoginCommand
class LoginCommand implements Command
{
    private static final  String number = "123456789012";
    private static final String pin = "1234";
    @Override
    public void execute() throws InterruptOperationException
    {
        while(true)
        {
            ConsoleHelper.writeMessage("Enter credit card number (12 digits) and pin (4 digits)");
            String n1 = ConsoleHelper.readString();
            String p1 = ConsoleHelper.readString();
            if (n1.length() != 12)
            {
                ConsoleHelper.writeMessage("This isn't true!");
                continue;
            }
            if (p1.length() != 4)
            {
                ConsoleHelper.writeMessage("This isn't true!");
                continue;
            }

            if (n1.equals(number) && p1.equals(pin))
            {
                ConsoleHelper.writeMessage("Varifications is successful!");
                break;
            }
            else
            {
                ConsoleHelper.writeMessage("This isn't true!");
            }
        }
    }
}

public enum Operation
public enum Operation
{
    LOGIN,
    INFO,
    DEPOSIT,
    WITHDRAW,
    EXIT;
    public static Operation getAllowableOperationByOrdinal(Integer i)
    {
            switch(i)
            {
                case 1: return INFO;
                case 2: return DEPOSIT;
                case 3: return WITHDRAW;
                case 4: return EXIT;
                default: throw new IllegalArgumentException();
            }
    }
}

class CashMachine
public class CashMachine
{
    public static void main(String[] args) throws IOException
    {
        Locale.setDefault(Locale.ENGLISH);

        try
        {
            CommandExecutor.execute(Operation.LOGIN);
            Operation operation;
            do
            {
                operation = ConsoleHelper.askOperation();
                CommandExecutor.execute(operation);
            }
            while(!operation.equals(Operation.EXIT));
        }
        catch (InterruptOperationException e)
        {
            ConsoleHelper.writeMessage("Pa-Pa!");
        }
    }
}

public class CommandExecutor
public class CommandExecutor
{
    private CommandExecutor() {}

    static Map<Operation, Command> map = new HashMap<Operation, Command>();
    static
    {
        map.put(Operation.LOGIN, new LoginCommand());
        map.put(Operation.DEPOSIT, new DepositCommand());
        map.put(Operation.INFO, new InfoCommand());
        map.put(Operation.WITHDRAW, new WithdrawCommand());
        map.put(Operation.EXIT, new ExitCommand());

    }

    public static final void execute(Operation operation) throws InterruptOperationException
    {
        if (map.containsKey(operation))
            map.get(operation).execute();
    }
}

кто нибудь пробовал udacity

Совершенно случайно наткнулся на вот такую новость:
Google научит вас писать приложения для Android

Зашел на udacity зарегистрировался, но почему то курсы оказались не бесплатными и стоят $199 в месяц. Первые семь дней даются бесплатно.

Курсы составлены профессионально, и сайт объясняет высокую цену тем что в обучении участвуют разработчики гугл, и что существует возможность устроится в мировые софт компании.

Если есть у кого опыт прохождения данных курсов или какие либо мнения по данному контенту не могли бы описать.

Заранее спасибо

Бонусная задача

Вроде простая задача, а бьюсь головой об стену.
package com.javarush.test.level05.lesson12.bonus01;

import java.io.*;

/* Нужно исправить программу, чтобы компилировалась и работала
Задача: Программа вводит два числа с клавиатуры и выводит их сумму на экран.
*/

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

int sum = a + b;
System.out.println(«Sum = » + sum);
}
}
Решение
package com.javarush.test.level05.lesson12.bonus01;

import java.io.*;

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

int sum = a + b;
System.out.println(«Sum = » + sum);
}
}

подскажите алгоритм разбиения числа на цифры различными способами не переставляя.

Знаю, что в зависимости от длины числа получается 2^(N-1) вариантов, где N — длина числа.
Например число 1234: (тогда 2^(4)=8)
  1. [1234]
  2. [1] [2] [3] [4]
  3. [1] [2] [34]
  4. [1] [23] [4]
  5. [1] [234]
  6. [12] [3] [4]
  7. [12] [34]
  8. [123] [4]
Рекурсия не подойдет, наверное, потому что мне нужно сохранять эти варианты.

Куриная фабрика (com.javarush.test.level14.lesson06.home01)

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

package com.javarush.test.level14.lesson06.home01;

/* Куриная фабрика
Написать Фабрику(Factory) по производству кур(Hen)
1. Создать класс Hen
1.1. Сделать его абстрактным
1.2. Добавить в класс абстрактный метод  int getCountOfEggsPerMonth()
1.3. Добавить в класс метод String getDescription(), который возвращает строку "Я курица."

2. Создать класс RussianHen, который наследуется от Hen
3. Создать класс UkrainianHen, который наследуется от Hen
4. Создать класс MoldovanHen, который наследуется от Hen
5. Создать класс BelorussianHen, который наследуется от Hen

6. В каждом из четырех последних классов написать свою реализацию метода getCountOfEggsPerMonth.
Методы должны возвращать количество яиц в месяц от данного типа куриц.

7. В каждом из четырех последних классов написать свою реализацию метода getDescription.
Методы должны возвращать строку вида:
<getDescription() родительского класса>  + <" Моя страна - SSSSS. Я несу N яиц в месяц.">
где SSSSS - название страны
где N - количество яиц в месяц

8. В классе HenFactory реализовать меетод getHen, который возвращает соответствующую стране породу кур
9. Все созданные вами классы должны быть в отдельных файлах
*/

public class Solution
{
    public static void main(String[] args)
    {
        Hen hen = HenFactory.getHen(Country.BELARUS);
        hen.getCountOfEggsPerMonth();
    }

    static  class HenFactory {
        static Hen getHen(String country) {
            Hen hen = null;

            if (country.equals(Country.BELARUS)) hen = new BelarusianHen();
            else if (country.equals(Country.MOLDOVA)) hen = new MoldovanHen();
            else if (country.equals(Country.RUSSIA)) hen = new RussianHen();
            else if (country.equals(Country.UKRAINE)) hen = new UkrainianHen();

            return hen;
        }
    }
}


package com.javarush.test.level14.lesson06.home01;

/**
 * Created by Макс on 01.05.2015.
 */

abstract class Hen {

    abstract int getCountOfEggsPerMonth();

    String getDescription()
    {
        return "Я курица.";
    }
}


package com.javarush.test.level14.lesson06.home01;

/**
 * Created by Макс on 01.05.2015.
 */

class BelarusianHen extends Hen
{
    @Override
    int getCountOfEggsPerMonth()
    {
        return 10000;
    }

    @Override
    String getDescription()
    {
        return super.getDescription() + " Моя страна - " + Country.BELARUS + ". Я несу " + getCountOfEggsPerMonth() + " яиц в месяц.";
    }
}


package com.javarush.test.level14.lesson06.home01;

/**
 * Created by Макс on 01.05.2015.
 */

class MoldovanHen extends Hen
{
    @Override
    int getCountOfEggsPerMonth()
    {
        return 1000;
    }

    @Override
    String getDescription()
    {
        return super.getDescription() + " Моя страна - " + Country.MOLDOVA + ". Я несу " + getCountOfEggsPerMonth() + " яиц в месяц.";
    }
}


package com.javarush.test.level14.lesson06.home01;

/**
 * Created by Макс on 01.05.2015.
 */

class UkrainianHen extends Hen
{
    @Override
    int getCountOfEggsPerMonth()
    {
        return 100;
    }

    @Override
    String getDescription()
    {
        return super.getDescription() + " Моя страна - " + Country.UKRAINE + ". Я несу " + getCountOfEggsPerMonth() + " яиц в месяц.";
    }
}


package com.javarush.test.level14.lesson06.home01;

/**
 * Created by Макс on 01.05.2015.
 */

class RussianHen extends Hen
{
    @Override
    int getCountOfEggsPerMonth()
    {
        return 10;
    }

    @Override
    String getDescription()
    {
        return super.getDescription() + " Моя страна - " + Country.RUSSIA + ". Я несу " + getCountOfEggsPerMonth() + " яиц в месяц.";
    }
}


package com.javarush.test.level14.lesson06.home01;

public interface Country
{
    String UKRAINE = "Ukraine";
    String RUSSIA = "Russia";
    String MOLDOVA = "Moldova";
    String BELARUS = "Belarus";
}

level15.lesson12.home09

Примеры ввода отрабатывает корректно. Сервер не принимает :( Я что-то не учел?

package com.javarush.test.level15.lesson12.home09;

/* Парсер реквестов
Считать с консоли URl ссылку.
Вывести на экран через пробел список всех параметров (Параметры идут после ? и разделяются &, например, lvl=15).
URL содержит минимум 1 параметр.
Если присутствует параметр obj, то передать его значение в нужный метод alert.
alert(double value) - для чисел (дробные числа разделяются точкой)
alert(String value) - для строк

Пример 1
Ввод:
http://javarush.ru/alpha/index.html?lvl=15&view&name=Amigo
Вывод:
lvl view name

Пример 2
Ввод:
http://javarush.ru/alpha/index.html?obj=3.14&name=Amigo
Вывод:
obj name
double 3.14
*/

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;

public class Solution {
    public static void main(String[] args) {
        //add your code here
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        String link = "";
        String obj = null;
        try{
            link = bufferedReader.readLine();
        }catch (Exception e){
        }

        LinkedList<String> fR = fullReq(link);
        obj = objContent(fR);
        trimReq(fR);
        printSolution(fR);

        if (obj != null){
            try{
                alert(Double.parseDouble(obj));
            }catch (Exception e){
                alert(obj);
            }
        }
    }

    public static LinkedList<String> fullReq(String link){
        if(!link.contains("?")) return null;

        LinkedList<String> requests = new LinkedList<String>();

        if(!link.contains("&")) {
            requests.add(link.substring(link.indexOf("?") + 1));
            return requests;
        }

        link = link.replace("?", "&");
        while (link.contains("&")){
            requests.add(link.substring(link.lastIndexOf("&") + 1));
            link = link.substring(0, link.lastIndexOf("&"));
        }

        return requests;
    }

    public static void trimReq(LinkedList<String> fR){
        for (int i = 0; i < fR.size(); i++) {
            if (fR.get(i).contains("=")){
                fR.set(i, fR.get(i).substring(0, fR.get(i).indexOf("=")));
            }
        }
    }

    public static String objContent(LinkedList<String> fR){
        for(String obj : fR){
            if (obj.contains("obj")){
                return obj.substring(obj.indexOf("=") + 1);
            }
        }
        return null;
    }

    public static void printSolution(LinkedList<String> fR){
        for (int i = fR.size() - 1; i >= 0; i--) {
            System.out.print(fR.get(i) + " ");
            if(i == 0){
                System.out.println();
            }
        }
    }

    public static void alert(double value) { System.out.println("double " + value); }

    public static void alert(String value) {
        System.out.println("String " + value);
    }
}
  • ,

Не работает javarush plugin на одном из компьютеров в локальной сети

Два компьютера подключены к роутеру. На одном из компьютеров я установил плагин раньше чем на втором.На первом всё работает, а на втором никак.Помогите плиз, почему на первом работает а на втором нет?

Задача com.javarush.test.level06.lesson11.bonus03

Помогите пожалйста. Как мне перебросить массив у метод Maximum и Minimum, да бы оно еще возвратило min или max
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
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int n[] = new int[5];
        int N[] = new int[5];
        for (int i = 0; i < 5; i++)
        {
            n[i] = Integer.parseInt(reader.readLine());
        }
        int l = Maximum(n);
        for (int i = 0; i < 5; i++)
        {
            N[i] = Minimum(n);
            n[i] = l;

            System.out.println(N[i]);
        }
    }

      public Minimum(int n[])
        {
            int min = n[n.length];

            for (int i = 0; i < (n.length - 1); i++)
            {
                if (min > n[i])
                {
                    min = n[i];
                }
            }
        }

        void Maximum(int n[])
        {
            int max = n[n.length];

            for (int i = 0; i < (n.length - 1); i++)
            {
                if (max < n[i])
                {
                    max = n[i];
                }
            }

        }


    }