棘手的Java程序

时间:2011-12-19 14:09:17

标签: java

请看下面的代码,请帮我解决问题。

class TestTrick{

    public static void main(String args[])
    {

    }

    static marker()
    {

    System.out.println("programe executed");

    }

}

此程序所需的结果是程序应该打印 program executed,意味着应该执行marker方法。但是有一些规则:

  1. 两种方法都不应该写任何内容。
  2. 该计划不能添加其他课程。
  3. 程序必须在marker方法中执行输出语句。
  4. 已经有三天了,我无法解决问题,因为我不是Java程序员。我已经在互联网上搜索了所有内容以获得线索,但我失败了。请 有人帮我严格遵守规则来运行这个程序。

12 个答案:

答案 0 :(得分:18)

我认为他们正在寻找的是static initializer

static {
    marker();
}

这在加载类时运行。

答案 1 :(得分:4)

问题是您不需要标记的方法 - 您只需要一个静态初始化块:

class Trick {
    // not a method, just something to execute when the class is loaded
    static { System.out.println("executed"); }

    public static void main(String[] args) {

    }

}

结果:http://ideone.com/bQAgT

如果您已经提供了代码(由于static marker()不是有效代码,我不确定您已经提供了代码),那么您只需从marker()拨打static即可块。

答案 2 :(得分:2)

你可以使用静态初始化程序,它将在Main方法运行之前执行。

static {
     marker();
}

答案 3 :(得分:2)

static块将为您提供帮助。但是您的程序中存在语法错误。由于marker是一种方法,因此它必须具有返回类型。我假设void

class testTrick {

    public static void main(String args[]) {
    }

    static void marker() {
        System.out.println("programe executed");
    }

    static {
        marker();
    }
}

答案 4 :(得分:1)

这很容易。在类中添加一个静态构造函数来调用marker方法,然后在构造函数中放入system.exit

答案 5 :(得分:1)

一个更棘手的程序是

class testTrick {
    static { marker(); System.exit(0); } static void marker() {
        System.out.println("program executed");
    }
}

注意:标记必须提供返回类型,例如void或者它不会编译。如果愿意,可以保留main()方法,但永远不会调用它。

静态初始化程序在main方法之前调用,因此它可以调用另一个方法,它可以在看到没有找到main()方法的消息之前退出。

答案 6 :(得分:0)

class testTrick
{

    public static void main(String args[])
    {
    }

    static 
    {
        marker();
    }

    static void marker()
    {
        System.out.println("programe executed");
    }
}

答案 7 :(得分:0)

这是否遵循您的规则?,创建静态块将始终执行,因为它与类文件一起存储,并且它需要一个主方法来调用

class TestTrick{

    public static void main(String args[])
    {

    }

    static marker()
    {

    System.out.println("programe executed");

    }

}

答案 8 :(得分:0)

public class M
{
    public static void main(String[] args)
    {

    }
    static
    {
        marker();
    }
    public static void marker()
    {
         System.out.println("Done");
    }
}

答案 9 :(得分:0)

class TestTrick{
public static void main(String args[])
{

}

static{
    marker();}
static void marker(){

System.out.println("programe executed");

}

查看要求。只要不改变方法,你就可以做任何你想做的事。

因此需要一个静态块(它总是在程序中执行)。它不是一种方法,你可以从那里调用marker()(需要为btw分配一个返回类型)

答案 10 :(得分:-1)

int i = 10 + + 11 - - 12 + + 13 - - 14 + + 15;

System.out.println(i);

答案 11 :(得分:-2)

您需要在main方法中调用marker方法,即;像这样的东西:

class testTrick {

    public static void main(String args[]) {
        marker();
    }

    static void marker() {
        System.out.println("programe executed");
    }

}