Разминка для хвоста

Рубрика: Java, Задачки | 2 December 2009, 01:01 | juriy

Ух, как же давно ничего не писал в блог! Отчасти тому виной твиттер. Я обязательно напишу отдельную заметку об этом “убийце блогов”. А сейчас, хочу представить вам пару свеженьких Java задачек.

1. Не изменяя код первго метода сделать так, чтобы программа компилировалась и печатала “This is right”. У этой задачки, как минимум, 3 решения. Комментировать код первого метода тоже нельзя.

public class A {

	public static void main(String[] args) {
		System.out.println("This is wrong");
	}

	public static void main(String[] args) {
		System.out.println("This is right");
	}
}

2. Написать стандартный Hello World на Java. При этом нельзя использовать ни одной точки с запятой. Закодированные UTF символы тоже использовать нельзя.

Ответы я опубликую через сутки, а пока что жду комментариев.

P.S. За мной уже закрепилась слава человека, обожающего абсолютно бесполезные, с практической точки зрения, задачи. Я пришел к выводу, что для таких “упражнений” слово “задача” совсем не подходит. Все привыкли, что “задачи” это упражнения, которые развивают какие-то практические навыки. К примеру “реализовать генератор случайных чисел на Java” это задачка. А для того, что публикую я, лучше подходит слово “загадка”. Так что вот вам свежая “без окон без дверей полна горница людей”.

Комментариев: 16

16 Responses to “Разминка для хвоста”

Комментарии:

  1. Аноним

    А завернуть первый метод во внутренний класс можно?

  2. Den

    public class A {

    public static void main(String[] args) {
    System.out.println(“This is wrong”);
    }

    static
    {
    System.out.println(“This is right”);
    System.exit(0);
    }

    }

  3. toxel

    public class A {
    static class B{
    public static void main(String[] args) {
    System.out.println(“This is wrong”);
    }
    }

    public static void main(String[] args) {
    System.out.println(“This is right”);
    }
    }

  4. antorun

    Ощущение, что это слегка некорректное решение, но все же …

    public class A {

    public static void main(String[] args) {
    System.out.println(“This is wrong”);
    }

    static {
    System.out.println(“This is right”);
    }
    }

  5. Oleg

    Решение второй задачки весьма простое:

    public class Test {
    public static void main(String[] args) {
    if(System.out.printf(“Hello”).checkError()){}
    }
    }

  6. Dmitry

    1. Сделать класс A анонимным, в том же файле сделать
    публичный класс с другим именем и в нём определить реальный
    метод main в который и перенести второй метод – который
    реально нужно вызвать.

    2. Совсем просто:

    public class FreackyHello {
    public static void main(String[] args) {
    if (System.out.printf(“Hello World”)!=null) {
    }
    }
    }

  7. zlosny

    public class A {

    public static void main(String[] args) {
    System.out.println(“This is wrong”);
    }

    static {
    System.out.println(“This is right”);
    }
    }

  8. zlosny

    public class A {

    private static class B {
    public static void main(String[] args) {
    System.out.println(“This is wrong”);
    }
    }

    public static void main(String[] args) {
    System.out.println(“This is right”);
    }
    }

  9. Dmitry

    fix:
    >Сделать класс A анонимным
    не анонимным, а с областью видимости пакета.

  10. Sergey Bondarenko

    public class HelloWorld {
    public static void main(String … args) {
    try {
    if (System.out.getClass().getMethod(“println”, String.class).invoke(System.out, “Hello World!”) == null) {}
    } catch (Exception e) {
    }
    }
    }

  11. juriy

    Ухх, сколько ответов :-) Большинство правильные.

    Касательно первой задачи, есть ещё один жутко извратный способ: определить класс String (собственный, пустой), а второй main переписать как

    public static void main(java.lang.String[] args) {

    }

    тоже должно сработать.

  12. nevermind

    1. если менять код второго метода можно:
    public class A {

    public static void main(String[] args) {
    System.out.println(“This is wrong”);
    }

    public static void main(java.lang.String[] args) {
    System.out.println(“This is right”);
    }
    }
    class String {}

  13. Den

    Что-то слабенькие у нас java программисты.

    public class A {
    public static void main(String[] args) {
    System.out.println(“This is wrong”);
    }

    public static void main() {
    System.out.println(“This is right”);
    }

    static
    {
    main();
    System.setOut(null);
    System.setErr(null);
    }
    }

    и вообще любые возможные трюки со стандартными потоками out и err.

  14. Alexander

    Во, давно один сайт на подобные бредовые задачки посещаю http://twisters.quiz4j.com/, заценит. Вдруг понравится.

  15. viru0

    public class BlogClass {

    public static void Main(String[] args) {
    System.out.println(“This is wrong”);
    }

    public static void main(String[] args) {
    System.out.println(“This is right”);
    }
    }

  16. sw

    задавали подобие этой задачки на собеседованиии недавно, теперь понятно откуда ноги растут. не нашел тогда решения:)))

Leave a Reply