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
。因此 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 中定义了主 class 并且很可能是在编译之后 运行 您正在尝试执行
java Fact
因此出现错误,因为 Fact class 中没有 main 方法。
编译 .java 文件后,您将获得两个 class 文件 Fact.class 和 FactMain.class,因此您应该执行
java FactMain
将FactMain
class移动到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 被分配给阶乘,然后您尝试乘以它。这没有意义。
我对 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
。因此 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 中定义了主 class 并且很可能是在编译之后 运行 您正在尝试执行
java Fact
因此出现错误,因为 Fact class 中没有 main 方法。 编译 .java 文件后,您将获得两个 class 文件 Fact.class 和 FactMain.class,因此您应该执行
java FactMain
将FactMain
class移动到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 被分配给阶乘,然后您尝试乘以它。这没有意义。