我是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)
答案 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
。因此fact
是0
。所以你的输出也是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
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