Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Маленький тест, :) 
:(
    Опции темы
v2v
Дата 20.1.2008, 01:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 8
Всего: 56



Цитата(Kangaroo @  20.1.2008,  01:50 Найти цитируемый пост)

2) забыты break'u y case'ов

слово забыты тут неуместно smile .


--------------------
PM   Вверх
Kangaroo
Дата 20.1.2008, 02:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Puzzle 34: Down for the Count
Как обычно - понять, что творится в программе и сказать вывод.
Код

public class Count {
    public static void main(String[] args) {
        final int START = 2000000000;
        int count = 0;
        for (float f = START; f < START + 50; f++)
            count++;
        System.out.println(count);
    }
}


Это последняя из loopy puzzlers... следующая тема - exceptional puzzles. Ща выложу дальше.


--------------------
Lost....
PM MAIL MSN   Вверх
Kangaroo
Дата 20.1.2008, 02:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Puzzle 36: Indecision 
Легкая, но поучительная  smile 
Код

public class Indecisive {

    public static void main(String[] args) {
        System.out.println(decision());
    }

    static boolean decision() {
        try {
            return true;
        } finally {
            return false;
        }
    }
}


Puzzle 37: Exceptionally Arcane
Скомпилируется или нет?
Код

interface Type1 {
    void f() throws CloneNotSupportedException;
}

interface Type2 {
    void f() throws InterruptedException;
}

interface Type3 extends Type1, Type2 {
}

public class Arcane3 implements Type3 {

    public void f() {
        System.out.println("Hello world");
    }

    public static void main(String[] args) {
        Type3 t3 = new Arcane3();
        t3.f();
    }

}


Puzzle 38: The Unwelcome Guest 
А вот с этой я не справился  smile 
Код

public class UnwelcomeGuest {

    public static final long GUEST_USER_ID = -1;

    private static final long USER_ID;

    static {
        try {
            USER_ID = getUserIdFromEnvironment();
        } catch (IdUnavailableException e) {
            USER_ID = GUEST_USER_ID;
            System.out.println("Logging in as guest");
        }
    }

    private static long getUserIdFromEnvironment()
            throws IdUnavailableException {
        throw new IdUnavailableException(); // Simulate an error
    }

    public static void main(String[] args) {
        System.out.println("User ID: " + USER_ID);
    }

}

class IdUnavailableException extends Exception {
    IdUnavailableException() { }
}




--------------------
Lost....
PM MAIL MSN   Вверх
v2v
Дата 20.1.2008, 02:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 8
Всего: 56



36 - просто
37 - ты бы написал что код в ИДЕ вставлять нельзя , а то он сразу сообщает что не так smile
38 - посути это же не на эксепшыны примерчик)?

Добавлено @ 02:55
а вот 34 не понял.

Это сообщение отредактировал(а) v2v - 20.1.2008, 02:55


--------------------
PM   Вверх
Kangaroo
Дата 20.1.2008, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Цитата(v2v @  20.1.2008,  01:54 Найти цитируемый пост)
36 - просто

угу

Цитата(v2v @  20.1.2008,  01:54 Найти цитируемый пост)
37 - ты бы написал что код в ИДЕ вставлять нельзя , а то он сразу сообщает что не так

Так я ж написал вопрос - скомпилируется или нет?  smile конечно нельзя в ИДЕ совать.

Цитата(v2v @  20.1.2008,  01:54 Найти цитируемый пост)
38 - посути это же не на эксепшыны примерчик)?

В принципе да smile 


Цитата(v2v @  20.1.2008,  01:54 Найти цитируемый пост)
а вот 34 не понял.

Объясню позже


--------------------
Lost....
PM MAIL MSN   Вверх
Prof_2000
Дата 20.1.2008, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 26.3.2005
Где: Харьков, Украина

Репутация: нет
Всего: 1



34 - понял, не раз наступал на такие грабли
36 - разобрался уже после того, как проверил ответ  smile 
37, 38 - дались легко
--------------------
Pereant qui ante nos nostra dixerunt! (лат.)      Да погибнут те, кто раньше нас высказал наши мысли!   
PM MAIL WWW ICQ   Вверх
batigoal
Дата 20.1.2008, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Цитата(Kangaroo @  20.1.2008,  03:20 Найти цитируемый пост)
Puzzle 38: The Unwelcome Guest 
А вот с этой я не справился  smile 

Так в чем вопрос-то был? Компилируется или нет?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Kangaroo
Дата 20.1.2008, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Цитата(batigoal @  20.1.2008,  14:01 Найти цитируемый пост)
Так в чем вопрос-то был? Компилируется или нет? 

Скомпилируется или нет. Если да - то что выведет?


--------------------
Lost....
PM MAIL MSN   Вверх
niasilil
Дата 21.1.2008, 03:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.6.2007
Где: USA

Репутация: 8
Всего: 9



такой подлости от float в 34 я не ожидал. smile
38 тоже забавно, был уверен что скомпилируется, а он зараза на final ругается. Не заметил засады. smile

36, 37 вроде легко. 


--------------------
SCJP 5.0, SCJD
PM MAIL   Вверх
v2v
Дата 22.1.2008, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 8
Всего: 56



Цитата(niasilil @  21.1.2008,  03:19 Найти цитируемый пост)
такой подлости от float в 34 я не ожидал. smile

ага!! smile  smile  



--------------------
PM   Вверх
Kangaroo
Дата 26.1.2008, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Наконец-то добрался до задачек smile

Сначала объясню старые.
Код

public class Count {
    public static void main(String[] args) {
        final int START = 2000000000;
        int count = 0;
        for (float f = START; f < START + 50; f++)
            count++;
        System.out.println(count);
    }
}

Тут, в принципе, понятно. START настолько большой, что при переводе во флоат 50 не влияют:
Код

     System.out.println(String.format("%10f",(float)START));  // выводит 2000000000,000000
     System.out.println(String.format("%10f",(float)(START+50)));  // тоже выводит 2000000000,000000


Дальше,
Puzzle 37: Exceptionally Arcane
Код

interface Type1 {
    void f() throws CloneNotSupportedException;
}
interface Type2 {
    void f() throws InterruptedException;
}
interface Type3 extends Type1, Type2 {
}
public class Arcane3 implements Type3 {
    public void f() {
        System.out.println("Hello world");
    }
    public static void main(String[] args) {
        Type3 t3 = new Arcane3();
        t3.f();
    }
}

Вот тут интересно уже.
Цитата(v2v @  20.1.2008,  01:54 Найти цитируемый пост)
37 - ты бы написал что код в ИДЕ вставлять нельзя , а то он сразу сообщает что не так 

Это в ИДЕ, НО попробуйте это же скомпилировать в javac. Он все скушает и выдаст Hello world  smile 
Причина:
Цитата

The set of checked exceptions that a method can throw is the intersection of the sets of checked exceptions that it is declared to throw in all applicable types, not the union.

То есть, если мы добавим CloneNotSupportedException и к Type2, то уже не скомпилится даже javac.....




--------------------
Lost....
PM MAIL MSN   Вверх
Kangaroo
Дата 26.1.2008, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Едем дальше

Нужно сказать скомпилятся/нет и что будет при работе проги.
Хитрая задачка  smile 
Puzzle 40: The Reluctant Constructor
Код

public class Reluctant {
    private Reluctant internalInstance = new Reluctant();

    public Reluctant() throws Exception {
        throw new Exception("I'm not coming out");
    }

    public static void main(String[] args) {
        try {
            Reluctant b = new Reluctant();
            System.out.println("Surprise!");
        } catch (Exception ex) {
            System.out.println("I told you so");
        }
    }
}


Эту я еще не решал, кидаю наугад. Нужно писать код
Puzzle 43: Exceptionally Unsafe
Есть плохой метод, который использует deprecated stop()
Код

public static void sneakyThrow(Throwable t) {
    Thread.currentThread().stop(t); // Deprecated!!
}

Что надо сделать (кидаю сначала на англицком, некоторым будет так понятнее):
Цитата

It is possible to write a method that is functionally equivalent to sneakyThrow without using any deprecated methods. In fact, there are at least two ways to do it. One of them works only in release 5.0 and later releases. Can you write such a method? It must be written in Java, not in JVM bytecode. You must not change the method after its clients are compiled. Your method doesn't have to be perfect: It is acceptable if it can't throw one or two subclasses of Exception.

Перевод:
Цитата

Есть возможность написать метод, функциональность которого эквивалентна sneakyThrow, без использования deprecated методов. Есть, по крайней мере, два способа сделать это. Один работает только в Java 5 и выше. Можете ли вы написать этот метод? Он должне быть написан на Java, не на JVM байткоде. Вы не можете менять метод после того как его "клиенты" откомпилированы. Ваш метод не должен быть идеальным: допустимо, чтобы он не может выкинуть один или два сабкласса Exception'a.

Кто-то понял последнее предложение? Объясните плз нормально, может я не так его перевел? Или там опечатка?

Удачи!

Это сообщение отредактировал(а) Kangaroo - 26.1.2008, 00:50


--------------------
Lost....
PM MAIL MSN   Вверх
v2v
Дата 26.1.2008, 01:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 8
Всего: 56



ну 40 я предположил правильно. прикольная задачка smile
А в 43 я так понял надо написать альтернативу методу : stop() - остановки текущего потока??




--------------------
PM   Вверх
Kangaroo
Дата 26.1.2008, 02:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Цитата(v2v @  26.1.2008,  00:59 Найти цитируемый пост)
А в 43 я так понял надо написать альтернативу методу : stop() - остановки текущего потока??

хреновый с меня переводчик?  smile 
Надо написать альтернативу методу sneakyThrow... даже две альтернативы


--------------------
Lost....
PM MAIL MSN   Вверх
Platon
Дата 28.1.2008, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



40 простая.
43 даже не понял.
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1117 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.