繁体   English   中英

错误:在Java类中找不到主要方法

[英]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 因此, fact0 因此您的输出也是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

FactMain.java

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

允许Fact类保留在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);
    }
}

编译类...

javac {package path}\FactMain.java

跑主班

java {package path}.FactMain

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM