Search code examples
javajavacfactorial

Error : Main method not found in java class


I am new to concepts of java. while preparing my first program of classes with objects i encountered a problem. here is the code and the error..please resolve.. PROGRAM:

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)

Solution

  • Rename the class file name Fact.java to FactMain.java.

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

    Note, your default constructor set fact but constructor Fact( int x) set n. Hence fact is 0. So your output is 0 too.

    Solution:

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

    Or,

    public Fact(int x) {
        this(); // default constructor
        n = x;
    }
    

    Here is the complete solution:

    Create a single class file named FactMain.java, then paste the following code:

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