• 0.85

  • +1.16

  • ,

Уровень 32. Вопросы.

Уровень 32
3 лекция: StringReader, StringWriter

Код в лекции для примера «Чтение из объекта reader и запись в объект writer»
Выдает ошибку:
Exception in thread "main" java.lang.NullPointerException
	at java.lang.StringBuilder.<init>(StringBuilder.java:112)


По всей видимости это происходит при 4-й итерации цикла, когда считывать из br собственно уже нечего и считывается null, который при попытке записи в StringBuilder и вызывает ошибку.

В чём тут дело, почему пример не работает как надо?

public static void main (String[] args) throws Exception
{
 //эту строку должен будет прочитать Reader
 String test = "Hi!\n My name is Richard\n I'm a photographer\n";
 //заворачиваем строку в StringReader
 StringReader reader = new StringReader(test);

 //Создаем объект StringWriter
 StringWriter writer = new StringWriter();

 //переписываем строки из Reader во Writer, предварительно развернув их
 executor(reader, writer);

 //получаем текст, который был записан во Writer
 String result = writer.toString();

 //выводем полученный из Writer’а текст на экран
 System.out.println("Результат: "+result);
}

public static void executor(Reader reader, Writer writer) throws Exception
{
 BufferedReader br = new BufferedReader(reader);
 while (br.ready())
 {
  //читаем строку из Reader’а
  String line = br.readLine();

  //разворачиваем строку задом наперед
  StringBuilder sb = new StringBuilder(line);
  String newLine = sb.reverse().toString();

  //пишем строку в Writer
  writer.write(newLine);
 }
}

Плагин JavaRush

После установки Плагина JavaRush в IDEA и нажатия его кнопки «Выбрать задачу»
появляется окно «Выбрать задачу»
Screenshot

Вопрос: Можно ли как то сделать чтобы можно было увеличивать размер этого окна? Ну или текста задач.

Java и другие языки программирования.

Читал вчера на Википедии про один из языков программирования и наткнулся там на любопытную ссылку:
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Пишут что Java пока ещё на 2-м месте в рейтинге языков программирования, но с тенденцией перехода на лидирующие позиции.

level17.lesson10.home06

package com.javarush.test.level17.lesson10.home06;

/* Глажка
И снова быт...
Поставьте один synchronized, чтобы diana и igor гладили по-очереди, ведь утюг всего один!
*/

public class Solution {
    public static void main(String[] args) {
        Person diana = new Person("Diana");
        Person igor = new Person("Igor");
    }

    public static class Person extends Thread { //Человек

        public Person(String name) {
            super(name);
            start();
        }

        @Override
        public void run() {
            Iron iron = takeIron();
            Clothes clothes = takeClothes();
            ironing(iron, clothes);
            returnIron();
        }

        protected Iron takeIron() {
            System.out.println("Taking an Iron");
            return new Iron();
        }

        protected Iron returnIron() {
            System.out.println("Returning the Iron");
            return new Iron();
        }

        protected Clothes takeClothes() {
            return new Clothes("T-shirt");
        }

        protected void ironing(Iron iron, Clothes clothes) {
            System.out.println(getName() + "'s ironing the " + clothes.name);
        }
    }

    public static class Iron {
    } //Утюг

    public static class Clothes {//Одежда
        String name;

        public Clothes(String name) {
            this.name = name;
        }
    }
}

Englisch

Как лучше всего перевести на русский язык вот эти замечательные выражения:

Для класса:
1) All Implemented Interfaces
2) Nested Class Summary

Для интерфейса:
3) All Known Implementing Classes
4) Enclosing class

level16.lesson13.home01

16-13-1

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

/* Thread.currentThread - всегда возвращает текущую нить
1. В методе printMsg присвой переменной t текущую нить.
2. В методе printMsg после всех действий поставь задержку в 1 миллисекунду.
*/

public class Solution {
    static int count = 5;

    public static void main(String[] args) {
        NameOfDefferentThreads tt = new NameOfDefferentThreads();
        tt.start();
        for (int i = 0; i < count; i++) {
            tt.printMsg();
        }
    }

    public static class NameOfDefferentThreads extends Thread {
        public void run() {
            for (int i = 0; i < count; i++) {
                printMsg();
            }
        }
        public void printMsg() {
            Thread t = null;//присвой переменной t текущую нить
            String name = t.getName();
            System.out.println("name=" + name);
            //add sleep here - добавь sleep тут
        }
    }
}

level15.lesson12.home02

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

/* Тренировка мозга
Найти логическую ошибку: метод doAction в реализации интерфейса Movable должен выдавать "moving".
Исправьте ошибку, при необходимости измените (отрефакторите) интерфейс Movable.
Результат вывода в консоль должен быть:
flying
moving
*/

public class Solution {
    public static void main(String[] args) {
        Duck duck = new Duck();
        Util.fly(duck);
        Util.move(duck);
    }

    public static class Duck implements Flyable, Movable {
        @Override
        public void doAction() {
            System.out.println("flying");
        }
    }

    public static class Util {
        static void fly(Flyable animal) {
            animal.doAction();
        }

        static void move(Movable animal) {
            animal.doAction();
        }
    }

    public static interface Flyable {
        void doAction();
    }

    public static interface Movable {
        void doAction();
    }
}