[英]What is the difference between java.lang.NoSuchMethodError main Exception in thread “main ” and Error: Main method not found in class
[英]Error : Main method not found in java class
我是Java概念的新手。 在准备我的第一个带有对象的类的程序时,我遇到了一个问题。 这是代码和错误。.请解决..程序:
class Fact
{
private int i;
private int n;
private int fact;
public Fact()
{ fact=1;
i=1;
}
public Fact( int x)
{ n=x; }
public void getAnswer()
{
while(i<=n)
{fact=fact*i;
i++;}
System.out.println(fact);
}
}
class FactMain
{
public static void main(String dt[])
{
Fact obj= new Fact(6);
obj.getAnswer();
}
}
错误:
Main method not found in class Fact, please define the main method as:
public static void main(String[] args)
只需将您的Parameterized构造函数更改为此
public Fact(int x) {
fact = 1;
i = 1;
n = x;
}
因为您在默认构造函数中声明了阶乘 ,但是您没有调用它。 因此,将0分配给阶乘,然后尝试将其乘以。 这没有任何意义。
您已将文件另存为Fact.java
。 因此,java尝试在Fact中查找主类。 将文件另存为FactMain.java
。应该可以。
您的主要方法在FactMain.java中 ,但是您正在将文件另存为Fact.java 。
您将需要将文件另存为FactMain.java,因为JVM希望main与.java文件的名称位于同一类中。
将类文件名Fact.java
重命名为FactMain.java
。
private int fact;
public Fact()
{ fact=1;
i=1;
}
public Fact( int x)
{ n=x; }
注意,默认构造函数设置fact
但构造函数Fact( int x)
设置n
。 因此, fact
为0
。 因此您的输出也是0
。
解:
public Fact(int x) {
fact = 1;
i = 1;
n = x;
}
要么,
public Fact(int x) {
this(); // default constructor
n = x;
}
这是完整的解决方案:
创建一个名为FactMain.java
class
文件,然后粘贴以下代码:
class Fact {
private int i;
private int n;
private int fact;
public Fact() {
fact = 1;
i = 1;
}
public Fact(int x) {
this();
n = x;
}
public void getAnswer() {
while (i <= n) {
fact = fact * i;
i++;
}
System.out.println(fact);
}
}
class FactMain {
public static void main(String[] dt) {
Fact obj = new Fact(6);
obj.getAnswer();
}
}
您已经在FactMain中定义了主类,并且很有可能在运行时编译后尝试执行
Java事实
因此,由于在Fact类中没有main方法,因此出现了错误。 编译.java文件后,您将获得两个类文件Fact.class和FactMain.class,因此应执行
Java FactMain
将FactMain
类移动到FactMain.java
public class FactMain
{
public static void main(String dt[])
{
Fact obj= new Fact(6);
obj.getAnswer();
}
}
允许Fact
类保留在Fact.java
文件中
public class Fact {
private int i;
private int n;
private int fact;
public Fact() {
fact = 1;
i = 1;
}
public Fact(int x) {
this();
n = x;
}
public void getAnswer() {
while (i <= n) {
fact = fact * i;
i++;
}
System.out.println(fact);
}
}
编译类...
javac {package path}\FactMain.java
跑主班
java {package path}.FactMain
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.