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

时间:2015-06-17 05:43:31

标签: java javac factorial

我是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();
    }
}

ERROR:

Main method not found in class Fact, please define the main method as:
public static void main(String[] args)

6 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

您已将文件保存为Fact.java。所以java试图在Fact中找到主类。将文件另存为FactMain.java它应该有效。

答案 2 :(得分:0)

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

您需要将文件另存为 FactMain.java ,因为JVM期望main与.java文件的名称位于同一个类中。

答案 3 :(得分:0)

将班级文件名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;
}

以下是完整的解决方案:

创建名为class的单个FactMain.java文件,然后粘贴以下代码:

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

答案 4 :(得分:0)

你已经在FactMain中定义了你的主类,并且很可能是在编译时你正在尝试执行

  

java Fact

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

  

java FactMain

答案 5 :(得分:0)

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