Смотритель: hubert
  • ,

level09.lesson08.task03;

Не понимаю, какой из пунктов я не выполнил / выполнил не правильно?

/* Перехват выборочных исключений
1. Разберись, какие исключения бросает метод BEAN.methodThrowExceptions.
2. Метод processExceptions должен вызывать метод BEAN.methodThrowExceptions и обрабатывать исключения:
2.1. если возникло исключение FileSystemException, то логировать его (вызвать метод BEAN.log) и пробросить дальше
2.2. если возникло исключение CharConversionException или любое другое IOException, то только логировать его - вызвать метод BEAN.log
3. Добавь в сигнатуру метода processExceptions класс исключения, которое ты пробрасываешь в п.2.1.
4. В методе main обработай оставшееся исключение - логируй его. Используй try..catch

Подсказка:
Если ты захватил исключение MyException, которое не хотел захватывать, его можно пробросить дальше кодом вида:
catch (MyException e) {
throw e;
}
*/

public class Solution {
    public static StatelessBean BEAN = new StatelessBean();

    public static void main(String[] args) {
        try{
            processExceptions();
        }
        catch (IOException e){
            BEAN.log(e);
        }
    }

    public static void processExceptions()throws FileSystemException, IOException {
        try{
            BEAN.methodThrowExceptions();
        }
        catch (FileSystemException e){
            BEAN.log(e);
            throw  e;
        }
        catch (CharConversionException e){
            BEAN.log(e);
        }
    }

    public static class StatelessBean {
        public void log(Exception exception) {
            System.out.println(exception.getMessage() + ", " + exception.getClass().getSimpleName());
        }

        public void methodThrowExceptions() throws CharConversionException, FileSystemException, IOException {
            int i = (int) (Math.random() * 3);
            if (i == 0)
                throw new CharConversionException();
            if (i == 1)
                throw new FileSystemException("");
            if (i == 2)
                throw new IOException();
        }
    }
}
  • ,

level15.lesson12.home01

Код компилируется и работает корректно, но проверку не проходит. Подскажите в чем ошибка.

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

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

/* Разные методы для разных типов
1. Считать с консоли данные, пока не введено слово "exit".
2. Для каждого значения вызвать метод print. Если значение:
2.1. содержит точку '.', то вызвать метод print для Double;
2.2. больше нуля, но меньше 128, то вызвать метод print для short;
2.3. больше либо равно 128, то вызвать метод print для Integer;
2.4. иначе, вызвать метод print для String.
*/

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader (new InputStreamReader(System.in));
        String console = reader.readLine();
        while (!console.equals("exit"))
        {

            try{
                if (console.contains("."))
                {
                    double Dbl = Double.parseDouble(console);
                    print(Dbl);
                }
                else if (Short.parseShort(console)>0 && Short.parseShort(console)<128)
                {
                    short Shorts = Short.parseShort(console);
                    print(Shorts);
                }
                else if (Integer.parseInt(console)>=128)
                {
                    int Inter = Integer.parseInt(console);
                    print(Inter);
                }
                else print(console);
            }
            catch (NumberFormatException e)
            {
                print(console);
            }
            console = reader.readLine();
        }

    }

    public static void print(Double value) {
        System.out.println("Это тип Double, значение " + value);
    }

    public static void print(String value) {
        System.out.println("Это тип String, значение " + value);
    }

    public static void print(short value) {
        System.out.println("Это тип short, значение " + value);
    }

    public static void print(Integer value) {
        System.out.println("Это тип Integer, значение " + value);
    }
}<code>
  • ,

level09.lesson11.bonus03

Программа работает правильно. Но не проходит =( Подскажите, пожалуйста.
package com.javarush.test.level09.lesson11.bonus03;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<String> list = new ArrayList<String>();
        while (true)
        {
            String s = reader.readLine();
            if (s.isEmpty()) break;
            list.add(s);
        }

        String[] array = list.toArray(new String[list.size()]);
        sort(array);

        for (String x : array)
        {
            System.out.println(x);
        }
    }

    public static void sort(String[] array)
    {
        //Напишите тут ваш код
        for ( int i=0; i<array.length; i++)
        {
            for (int j=i+1; j<array.length; j++)
            {
                if (isNumber(array[i]) && isNumber(array[j]))
                {
                    if(isGreaterThen(array[j], array[i]))
                    {
                       // System.out.println(array[i] + " " + array[j]);

                        String t = array[i] ;
                        array[i] = array[j];
                        array[j] = t;
                      //  System.out.println(array[i] + " " + array[j]);
                       // System.out.println("------------------");
                    }
                }

                else if (!isNumber(array[i]) && !isNumber(array[j]))
                        {
                      if (isGreaterThen(array[i].toLowerCase(), array[j].toLowerCase() ))
                      {
                         // System.out.println(array[i] + " " + array[j]);
                          String t = array[i];
                          array[i] = array[j];
                          array[j] = t;
                        //  System.out.println(array[i] + " " + array[j]);
                         // System.out.println("------------------");
                      }
                }

            }
        }
    }

    //Метод для сравнения строк: 'а' больше чем 'b'
    public static boolean isGreaterThen(String a, String b)
    {
        return a.compareTo(b) > 0;
    }


    //строка - это на самом деле число?
    public static boolean isNumber(String s)
    {
        if (s.length() == 0) return false;

        for (char c : s.toCharArray())
        {
            if (!Character.isDigit© && c != '-') return false;
        }
        return true;
    }
}


И ещё я не пойму вот это условие
c != '-'
для чего оно?
  • ,

level08.lesson11.bonus03

Добрый день!
Подскажите, пожалуйста, где спряталась ошибка:
public static void sort(String[] array)
    {
        String helpList;
        for (int i = 1; i < array.length; i++) {
            for (int b = (array.length - 1); b >= i; b--) {
                if (array[b].charAt(0) == array[b - 1].charAt(0)) {
                    if (isGreaterThen(array[b], array[b - 1])) {
                        for (int a = 1; a < array[b - 1].length() - 1; a++) {
                            if (array[b].charAt(a) < array[b - 1].charAt(a)) {
                                helpList = array[b - 1];
                                array[b - 1] = array[b];
                                array[b] = helpList;
                                break;
                            }
                        }
                    } else {
                        for (int a = 1; a < array[b].length() - 1; a++) {
                            if (array[b].charAt(a) < array[b - 1].charAt(a)) {
                                helpList = array[b - 1];
                                array[b - 1] = array[b];
                                array[b] = helpList;
                                break;
                            }
                        }

                    }
                } else if (array[b].charAt(0) < array[b - 1].charAt(0)) {
                    helpList = array[b - 1];
                    array[b - 1] = array[b];
                    array[b] = helpList;
                }
            }
        }


    }

    //Метод для сравнения строк: 'а' больше чем 'b'
    public static boolean isGreaterThen(String a, String b)
    {
        return a.compareTo(b) >= 0;
    }
}

Ошибка возникает на стадии определения идентичных символов в строках, с индексом 0;
Берутся 2 строки из массива, количество пробежек по строке должно быть ограничено размером меньшей из 2 строк -1; Но через раз ловится ошибка — индекс элемента в строке превышен. Уже мозг себе вывихнул, пытаясь понять где происходит косяк. Главное подозрение падает на внутренний цикл замены элементов:
helpList = array[b - 1];
      array[b - 1] = array[b];
      array[b] = helpList;
  • ,

level16.lesson07.task02

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

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

/* Stopwatch (Секундомер)
2. Реализуй логику метода doSeveralSteps так, чтобы учитывалась скорость бегуна.
2.1. Метод getSpeed() в классе Runner показывает, сколько шагов в секунду делает бегун.
Нужно, чтобы бегун действительно делал заданное количество шагов в секунду.
Если Иванов делает 4 шага в секунду, то за 2 секунды он сделает 8 шагов.
Если Петров делает 2 шага в секунду, то за 2 секунды он сделает 4 шага.
2.2. Метод sleep в классе Thread принимает параметр типа long.
*/

МЕТОД №1
private void doSeveralSteps() throws InterruptedException {
stepNumber++;
//add your code here — добавь код тут
Thread.sleep(1000L);
System.out.println(owner.getName() + " делает шаг №" + (stepNumber *owner.getSpeed())+ "!");
}
Вывод:
Petrov делает шаг №2.0!
Ivanov делает шаг №4.0!
Petrov делает шаг №4.0!
Ivanov делает шаг №8.0!

МЕТОД №2
private void doSeveralSteps() throws InterruptedException {
//add your code here — добавь код тут
Thread.sleep(1000L);
stepNumber = stepNumber + (int)owner.getSpeed();
System.out.println(owner.getName() + " делает шаг №" + stepNumber+ "!");
}
Вывод:
Ivanov делает шаг №4!
Petrov делает шаг №2!
Ivanov делает шаг №8!
Petrov делает шаг №4!

МЕТОД №3
private void doSeveralSteps() throws InterruptedException {
//add your code here — добавь код тут
Thread.sleep(1000L);
stepNumber +=owner.getSpeed();
System.out.println(owner.getName() + " делает шаг №" + stepNumber+ "!");
Вывод:
Petrov делает шаг №2!
Ivanov делает шаг №4!
Ivanov делает шаг №8!
Petrov делает шаг №4!
  • ,

level09.lesson11.home04

Ребята, почему не проходит? В программе выводит только на русском языке, надо на английском. Почитал туториал перевода языка не нашёл(
package com.javarush.test.level09.lesson11.home04;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

/* Конвертер дат
Ввести с клавиатуры дату в формате «08/18/2013»
Вывести на экран эту дату в виде «AUG 18, 2013».
Воспользоваться объектом Date и SimpleDateFormat.
*/

public class Solution {

    public static void main(String[] args) {
        //Напишите тут ваш код

        Date date = new Date("08/18/2013");
        SimpleDateFormat sf = new SimpleDateFormat("MMM dd, yyyy");
        System.out.println(sf.format(date).toUpperCase());

       }
}
  • ,

level06.lesson05.task03

Добрый день!

Программа успешно прошла тестирование.

Но смущает тот факт, что ни разу не высветилось сообщение «Cat destroyed» или «Dog destroyed», как предусмотрено в коде.
Насколько это нормально? Правильно ли я выполнил задание?

/* 10 000 объектов Cat и Dog
Создать в цикле 10 000 объектов Cat и Dog. (Java-машина должна начать уничтожать неиспользуемые, и метод finalize хоть раз да вызовется).
*/
  • ,

level17.lesson04.task04

Всё сделал однако не проходит задача
package com.javarush.test.level17.lesson04.task04;

/* Синхронизированный президент
И снова Singleton паттерн - синхронизация в статическом блоке
Внутри класса OurPresident в статическом блоке создайте синхронизированный блок.
Внутри синхронизированного блока инициализируйте president.
*/

public class Solution {
    public static class OurPresident {

        private static OurPresident president;
        static
        {
            synchronized (president)
            {
                president=new OurPresident();
            }
        }
        private OurPresident() {
        }
        public static OurPresident getOurPresident() {
            
            return president;
        }
    }
}
  • ,

level09.lesson11.home03

вроде все условия соблюдены и работает даже. но проверку не проходит. add пробовал как list.add(0,number) так и list.add(number); а то условие сохранить порядок ввода не совсем понятно какой именно порядок. но все равно не принимается.
public static void readData(ArrayListlist)
{

try
{
while (true)
{
Scanner scanner = new Scanner(System.in);
Integer number = scanner.nextInt();
list.add(0,number);
}
}
catch (InputMismatchException e)
{
//System.out.println(e.getStackTrace());

}
finally
{
for (Integer integer: list) {
System.out.println(integer);
}
}
}
  • ,

level09.lesson08.task01

Подскажте, как перехватить FileNotFoundException понимаю, это RuntimeException.
package com.javarush.test.level09.lesson08.task01;

import java.io.FileNotFoundException;
import java.net.URISyntaxException;
import java.util.HashMap;

/* Исключения
Есть метод, который выбрасывает два исключения унаследованные от Exception и два унаследованных от RuntimeException:
NullPointerException, ArithmeticException, FileNotFoundException, URISyntaxException.

Нужно перехватить NullPointerException и FileNotFoundException, но не перехватывать
ArithmeticException и URISyntaxException. Как это сделать?
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        //Напишите тут ваш код
        try
        {

        method1();
        }


        catch  (NullPointerException e)
        {
              System.out.println("   ");
        }
        catch ( FileNotFoundException e)
        {
            String s =e.getMessage();
            System.out.println(s);
        }

        //Напишите тут ваш код

    }

    public static void method1() throws  ArithmeticException, URISyntaxException //, FileNotFoundException
    {
        int i = (int) (Math.random() * 4);
    //    if (i == 0)
  //         throw new NullPointerException();
        if (i == 1)
            throw new ArithmeticException();
     // if (i == 2)
       // throw new FileNotFoundException();
        if (i == 3)
            throw new URISyntaxException("", "");


    }
}
  • ,

level06.lesson08.task05

Доброго времени суток, подскажи пожалуйста.
Я наверное не совсем понял условие…
package com.javarush.test.level06.lesson08.task05;

/* Класс StringHelper
Cделать класс StringHelper, у которого будут 2 статических метода:
String multiply(String s, int count) – возвращает строку повторенную count раз.
String multiply(String s) – возвращает строку повторенную 5 раз.
Пример:
Амиго -> АмигоАмигоАмигоАмигоАмиго
*/

public class StringHelper
{
    public static String multiply(String s)
    {
        String result = s;
        //Напишите тут ваш код
        for (int i=0;i<5;i++)
            System.out.println(result);
        return result;
    }

    public static String multiply(String s, int count)
    {
        String result = s;
        //Напишите тут ваш код
        for (int i=0;i<count;i++)
            System.out.println(result);
        return result;
    }
  • ,

level15.lesson12.home05

Прошу Вашей помощи программа никак не хочет проходить тестирование,
надеюсь создатели задач в курсе были что модификатор доступа private не генерируется в IJ в общем надеюсь на помощь.

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

/* Перегрузка конструкторов
1. В классе Solution создайте по 3 конструктора для каждого модификатора доступа.
2. В отдельном файле унаследуйте класс SubSolution от класса Solution.
3. Внутри класса SubSolution создайте конструкторы командой Alt+Insert -> Constructors.
4. Исправьте модификаторы доступа конструкторов в SubSolution так, чтобы они соответствовали конструкторам класса Solution.
*/

public class Solution {
public Solution(Object pub1){}
public Solution(String pub2){}
public Solution(Integer pub3){}

protected Solution(Character prot1){}
protected Solution(Double prot2){}
protected Solution(Exception prot3){}

private Solution(Number priv1){};
private Solution(Boolean priv2){};
private Solution(Float priv3){};
}

файл SubSolution
package com.javarush.test.level15.lesson12.home05;

public class SubSolution extends Solution
{
public SubSolution(Object pub1)
{
super(pub1);
}

public SubSolution(String pub2)
{
super(pub2);
}

public SubSolution(Integer pub3)
{
super(pub3);
}

protected SubSolution(Character prot1)
{
super(prot1);
}

protected SubSolution(Double prot2)
{
super(prot2);
}

protected SubSolution(Exception prot3)
{
super(prot3);
}
}