我正在改编一个可以编译的程序;但是当我尝试运行它时,我收到一个错误窗口,显示“未找到主类”。我在您的网站上搜索了此类问题(对于 NetBeans),然后尝试在“项目”窗口中单击我的项目。 Lagrange/properties/run 和显示的类是我的程序中的类。我在该窗口中单击“运行”并收到相同的错误消息。 程序粘贴如下:
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);
}
}
最佳答案
它是public static void main
- main方法必须是静态。在当前的代码中,您在非静态的内部类中声明了 main 方法。这是不允许的,它将失败,如下所示
static methods can only be declared in a static or top level type.
下面提供了一个适合您的解决方案并进行了这些更改 -
main
方法转移到 MyMath 类。main
方法是静态的,无法访问非静态成员,因此会创建一个 MyMath 实例并用于打印结果。
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);
}
}
关于java - Java中如何指定主类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41798548/