2

我有以下代码:

public class FibonnaciSeries {

    static {
        int first = 0;
        int next = 1;
        int sum = 0;
        System.out.println(first);
        System.out.println(next);
        for (int i = 2; i < 10; i++) {
            sum = next + first;
            first = next;
            next = sum;
            System.out.println(sum);
        }
    }

}

当我想在 Eclipse 中运行它时,它没有运行。为什么。?

4

3 回答 3

2

做对了——把代码从静态初始化块中取出,放到静态主块中:

public class FibonnaciSeries {

    public static main(String[] args) {
        int first = 0;
        int next = 1;
        int sum = 0;
        System.out.println(first);
        System.out.println(next);
        for (int i = 2; i < 10; i++) {
            sum = next + first;
            first = next;
            next = sum;
            System.out.println(sum);
        }
    }
}

我担心您可能正在使用静态初始化程序块,因为您并不完全熟悉 main 方法的结构。Java程序需要一个起点,一个JVM可以识别并知道“这是开始运行的地方”的方法,也就是main方法。给你的类其中之一,并避免使用静态初始化程序块,除非你知道为什么需要使用它并且出于这个特定原因使用它。

于 2013-10-27T03:18:14.017 回答
1

从 开始Java 7,您需要有main()方法来执行代码。

添加public static void main(String args[]) { }到您的班级。

在之前Java 6和之后,您可以添加System.exit(0);到您的静态块中,以使您的代码能够执行。(注意:这在 Eclipse 上不起作用。从命令行尝试。)

于 2013-10-27T02:58:32.280 回答
1

它应该是:

public class FibonnaciSeries {

static {
    int first = 0;
    int next = 1;
    int sum = 0;
    System.out.println(first);
    System.out.println(next);
    for (int i = 2; i < 10; i++) {
        sum = next + first;
        first = next;
        next = sum;
        System.out.println(sum);
    }
}

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

我测试了它并且有效。它需要一个主要功能来在控制台环境中执行您的类,并且您的静态块将被加载。

于 2013-10-27T03:01:04.490 回答