Error : Main method not found in java 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)

您已将文件另存为 Fact.java。所以 java 试图找到主要的 class 事实上。将文件另存为 FactMain.java 它应该可以工作。

您的主要方法在FactMain.java中,但您将文件保存为Fact.java.

您需要将文件保存为 FactMain.java,因为 JVM 期望 main 与 class 作为 .java 文件的名称。

将 class 文件名 Fact.java 重命名为 FactMain.java

private int fact;

public Fact()
    { fact=1;
      i=1;
    }
public Fact( int x)
    { n=x; }

请注意,您的默认构造函数集 fact 但构造函数 Fact( int x)n。因此 fact0。所以你的输出也是 0

解法:

public Fact(int x) {
    fact = 1;
    i = 1;
    n = x;
}

或者,

public Fact(int x) {
    this(); // default constructor
    n = x;
}

完整的解决方案如下:

创建一个名为 FactMain.javaclass 文件,然后粘贴以下代码:

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 中定义了主 class 并且很可能是在编译之后 运行 您正在尝试执行

java Fact

因此出现错误,因为 Fact class 中没有 main 方法。 编译 .java 文件后,您将获得两个 class 文件 Fact.class 和 FactMain.class,因此您应该执行

java FactMain

FactMainclass移动到FactMain.java

FactMain.java

public class FactMain
{
    public static void main(String dt[])
    {
        Fact obj= new Fact(6);
        obj.getAnswer();
    }
}

允许 Fact class 保留在 Fact.java 文件中

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);
    }
}

编译 classes...

javac {package path}\FactMain.java

运行主class

java {package path}.FactMain

只需将您的参数化构造函数更改为此

public Fact(int x) {
    fact = 1;
    i = 1;
    n = x;
}

因为您在 默认构造函数 中声明了 factorial 而您没有调用它。因此,0 被分配给阶乘,然后您尝试乘以它。这没有意义。