Francis Putnam
Francis Putnam

Reputation: 33

Factorial Calculator

How can I make the program to perform a new or repeat the operation or ask the user to input again a number and know the factorial of it.

import java.util.Scanner;

public class Loops {

    public static void main(String[] args) 
    {
        Scanner input = new Scanner(System.in);

        int num, num2 = 1, x, i;

        System.out.println("-------------Factorial Calculator-------------");
        System.out.print("Enter a positive integer: ");
        num = input.nextInt();

        if (num > 0) {
            System.out.print(num + "! = ");
            for (i = 1; i <= num; i++) {
                if(i < num){
                    System.out.print(i + " x ");
                    num2 = num2 * i;
                }
                if(i == num){
                    System.out.print(i);
                    num2 = num2 * i;
                    System.out.println("\nThe factorial of " + num + " is " + num2);
                    System.out.println();
                }
            }
        }else if (num < 0) {
            System.out.println("Please input a valid integer. Program stopped.");
        }
    }
}

Upvotes: 0

Views: 1083

Answers (6)

Nabeel binnazeer
Nabeel binnazeer

Reputation: 1

package condiloop.Functions;
import java.util.Scanner;

public class factorial {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("Enter a number to calculate its factorial: ");
        int num = scanner.nextInt();
        
        long result = Factorial(num);
        System.out.println("Factorial of " + num + " is " + result);
        
        scanner.close();
    }
    
    public static long Factorial(int n) {
        if (n == 0 || n == 1) {
            return 1;
        } else {
            long fact = 1;
            for (int i = 2; i <= n; i++) {
                fact *= i;
            }
            return fact;
        }
    }
}

Upvotes: 0

Emmanuel Jamili
Emmanuel Jamili

Reputation: 1

import java.util.Scanner;

public class FactorialCalculator1 {

public static void main(String[] args) {
    
        Scanner input = new Scanner(System.in);
        
        int num;
        
        System.out.println("<------Factorial Calculator------>");
        while ( true ) {
            
        System.out.print("Enter a positive integer: ");
        num = input.nextInt();
        
        boolean runMore = true;
        
        int i;
        int num2 = 1;
        
        if (num > 0) {
            System.out.print(num + "! = ");
            for (i = 1; i <= num; i++) {
                if(i < num){
                    System.out.print(i + " x ");
                    num2 = num2 * i;
                }
                if(i == num){
                    System.out.print(i);
                    num2 = num2 * i;
                    System.out.println("\nThe factorial of " + num + " is: " + num2);
                    System.out.println();
                }
            }
        }else if (num < 0) {
            System.out.println("Invalid input! Program stopped!");
            System.exit(0);
           }
        }
    }
}

Upvotes: 0

M. Gianota
M. Gianota

Reputation: 184

Put the code that computes the factorial in a separate method and call it from within a loop in main().

import java.util.Scanner;

public class Loops {

    public static void printFactorial(int num) {
        int i = 0;
        int num2 = 0;
        if (num > 0) {
            System.out.print(num + "! = ");
            for (i = 1; i <= num; i++) {
                if(i < num){
                    System.out.print(i + " x ");
                    num2 = num2 * i;
                }
                if(i == num){
                    System.out.print(i);
                    num2 = num2 * i;
                    System.out.println("\nThe factorial of " + num + " is " + num2);
                    System.out.println();
                }
            }
        }else if (num < 0) {
            System.out.println("Please input a valid integer. Program stopped.");
            System.exit(0);
        }

    }
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        int num = 0;
        System.out.println("-------------Factorial Calculator-------------");
        while ( true ) {
            System.out.print("Enter a positive integer: ");
            num = input.nextInt();
            printFactorial(num);
        }
    }
}

Upvotes: 1

DEV
DEV

Reputation: 1726

use while loop when user not typing a positif number :

System.out.print("Enter a positive integer: ");
num = input.nextInt();
while(num<0) {
    System.out.println("Please input a valid integer. Program stopped.");
    num = input.nextInt();
}

code :

    import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        int num, num2 = 1, x, i;

        System.out.println("-------------Factorial Calculator-------------");
        System.out.print("Enter a positive integer: ");
        num = input.nextInt();
        input.nextLine();
        while (num < 0) {
            System.out.println("Please input a valid integer. Program stopped.");
            System.out.print("Enter a positive integer: ");
            num = input.nextInt();
        }
        if (num > 0) {
            System.out.print(num + "! = ");
            for (i = 1; i <= num; i++) {
                if (i < num) {
                    System.out.print(i + " x ");
                    num2 = num2 * i;
                }
                if (i == num) {
                    System.out.print(i);
                    num2 = num2 * i;
                    System.out.println("\nThe factorial of " + num + " is " + num2);
                    System.out.println();
                }
            }
        }
    }
}

Upvotes: 0

Raj
Raj

Reputation: 73

import java.util.Scanner;

public class Main {
public static void main(String[] args) 
{
    Scanner input = new Scanner(System.in);
    
    
    boolean runMore = true;
    
    while(runMore){
    
    

    int num, num2 = 1, x, i;

    System.out.println("-------------Factorial Calculator-------------");
    System.out.print("Enter a positive integer: ");
    num = input.nextInt();

    if (num > 0) {
        System.out.print(num + "! = ");
        for (i = 1; i <= num; i++) {
            if(i < num){
                System.out.print(i + " x ");
                num2 = num2 * i;
            }
            if(i == num){
                System.out.print(i);
                num2 = num2 * i;
                System.out.println("\nThe factorial of " + num + " is " + num2);
                System.out.println();
            }
        }
    }else if (num < 0) {
        System.out.println("Please input a valid integer. Program stopped.");
    }
    
    System.out.println("Want to contine : Enter '1' for yes and '0' for no");
    int wantToContinue = input.nextInt();
    
    if(wantToContinue==0){
        
        runMore = false;
    }
    
    }
}
}
    
    

Upvotes: 0

Turtle
Turtle

Reputation: 704

Use a while loop

import java.util.Scanner;

public class Loops {
    static boolean readInput = true;
    public static void main(String[] args) {
        while(readInput) calculateFactorial();
    }
}

private static void calculateFactorial() {
    Scanner input = new Scanner(System.in);

    int num, num2 = 1, x, i;

    System.out.println("-------------Factorial Calculator-------------");
    System.out.print("Enter a positive integer: ");
    num = input.nextInt();
    if(num <= 0) {
        readInput = false;
        return;
    }

    if (num > 0) {
        System.out.print(num + "! = ");
        for (i = 1; i <= num; i++) {
            if(i < num){
                System.out.print(i + " x ");
                num2 = num2 * i;
            }
            if(i == num){
                System.out.print(i);
                num2 = num2 * i;
                System.out.println("\nThe factorial of " + num + " is " + num2);
                System.out.println();
            }
        }
    }else if (num < 0) {
        System.out.println("Please input a valid integer. Program stopped.");
    }
}

Upvotes: 1

Related Questions