[英]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.