如何在Java中指定一个主类

时间:2017-01-23 02:43:35

标签: java class

我正在调整编译好的程序;但是当我尝试运行它时,我得到一个错误窗口,上面写着“找不到主要类”。我在您的网站上搜索了这类问题(对于NetBeans),然后在项目窗口中尝试单击我的项目。拉格朗日/属性/运行和显示的类是我的程序中的一个。我点击在该窗口中运行并得到相同的错误消息。 该程序粘贴在下面:

package lagrange;

class MyMath {
    double xi[] = { 0, 0.5, 1, 1.5, 2 };
    double fi[] = { 1, 0.938470, 0.765198, 0.511828, 0.223891 };
    double x = 0.9;
    double f = aitken(x, xi, fi);

    // Method to carry out the Aitken recursions.
    public double aitken(double x, double xi[], double fi[]) {
        int n = xi.length - 1;
        double ft[] = (double[]) fi.clone();
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < n - i; ++j) {
                ft[j] = (x - xi[j]) / (xi[i + j + 1] - xi[j]) * ft[j + 1]
                        + (x - xi[i + j + 1]) / (xi[j] - xi[i + j + 1]) * ft[j];
            }
        }
        return ft[0];
    }
}

public class Lagrange {
    public void main(String[] args) {
        // TODO code application logic here
        System.out.println("Interpolated value: " + f);
    }
}

1 个答案:

答案 0 :(得分:1)

它是public static void main - 主要方法必须是静态。在当前的代码中,您声明内部类中的main方法不是静态的。这是不允许的,它将失败为

  

静态方法只能在静态或顶级类型中声明。

下面提供了一个适合您的解决方案 -

  1. main方法转移到MyMath类。
  2. main方法是静态的,无法访问非静态成员,因此创建了一个MyMath实例并用于打印结果。
  3. package lagrange;
    
    class MyMath {
    
        double xi[] = { 0, 0.5, 1, 1.5, 2 };
        double fi[] = { 1, 0.938470, 0.765198, 0.511828, 0.223891 };
        double x = 0.9;
    
        double f = aitken(x, xi, fi);
    
        // Method to carry out the Aitken recursions.
    
        public double aitken(double x, double xi[], double fi[]) {
            int n = xi.length - 1;
            double ft[] = (double[]) fi.clone();
            for (int i = 0; i < n; ++i) {
                for (int j = 0; j < n - i; ++j) {
                    ft[j] = (x - xi[j]) / (xi[i + j + 1] - xi[j]) * ft[j + 1]
                            + (x - xi[i + j + 1]) / (xi[j] - xi[i + j + 1]) * ft[j];
                }
            }
            return ft[0];
        }
    
        public static void main(String[] args) {
            System.out.println("Interpolated value: " + new MyMath().f);
        }
    
    }