Ух, как же давно ничего не писал в блог! Отчасти тому виной твиттер. Я обязательно напишу отдельную заметку об этом “убийце блогов”. А сейчас, хочу представить вам пару свеженьких 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” это задачка. А для того, что публикую я, лучше подходит слово “загадка”. Так что вот вам свежая “без окон без дверей полна горница людей”.
Tweet
А завернуть первый метод во внутренний класс можно?
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);
}
}
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”);
}
}
Ощущение, что это слегка некорректное решение, но все же …
public class A {
public static void main(String[] args) {
System.out.println(“This is wrong”);
}
static {
System.out.println(“This is right”);
}
}
Решение второй задачки весьма простое:
public class Test {
public static void main(String[] args) {
if(System.out.printf(“Hello”).checkError()){}
}
}
1. Сделать класс A анонимным, в том же файле сделать
публичный класс с другим именем и в нём определить реальный
метод main в который и перенести второй метод – который
реально нужно вызвать.
2. Совсем просто:
public class FreackyHello {
public static void main(String[] args) {
if (System.out.printf(“Hello World”)!=null) {
}
}
}
public class A {
public static void main(String[] args) {
System.out.println(“This is wrong”);
}
static {
System.out.println(“This is right”);
}
}
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”);
}
}
fix:
>Сделать класс A анонимным
не анонимным, а с областью видимости пакета.
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) {
}
}
}
Ухх, сколько ответов :-) Большинство правильные.
Касательно первой задачи, есть ещё один жутко извратный способ: определить класс String (собственный, пустой), а второй main переписать как
public static void main(java.lang.String[] args) {
…
}
тоже должно сработать.
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 {}
Что-то слабенькие у нас 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.
Во, давно один сайт на подобные бредовые задачки посещаю http://twisters.quiz4j.com/, заценит. Вдруг понравится.
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”);
}
}
задавали подобие этой задачки на собеседованиии недавно, теперь понятно откуда ноги растут. не нашел тогда решения:)))