Java 如何转换输出中的长数据类型以使代码正常工作?

Java 如何转换输出中的长数据类型以使代码正常工作?,java,factorial,Java,Factorial,在我的代码中,我包含了一个输出方法,参数中包含变量,问题是它们是不同的数据类型。我知道我可以将一个转换为另一个,这样代码就可以工作了,但我不知道如何才能不影响方程的工作方式 我尝试过将阶乘从一个长变量改为一个整型变量,它需要是一个长变量才能使数字达到最大值 import java.util.InputMismatchException; import java.util.Scanner; public class Main { public sta

在我的代码中,我包含了一个输出方法,参数中包含变量,问题是它们是不同的数据类型。我知道我可以将一个转换为另一个,这样代码就可以工作了,但我不知道如何才能不影响方程的工作方式

我尝试过将阶乘从一个长变量改为一个整型变量,它需要是一个长变量才能使数字达到最大值

    import java.util.InputMismatchException;
    import java.util.Scanner;

    public class Main 
    {
      public static void main(String[] args)
      {
         System.out.println("\tBasic Factorial Calculator");
         System.out.println();

         int i, number;
         long factorial = 1;

         number = getNumber();
         System.out.println();
         output(number, factorial);
      }

      public static int getNumber()
      {
        int Num = 0;
        boolean done = false;
        Scanner input = new Scanner(System.in);
        while(!done)
        {
          try
          {
            System.out.println("Enter the number you want to find a 
    factorial of: ");
            Num = input.nextInt();
            if (Num <= 0) throw new InputMismatchException();
            done = true;
          }
          catch(InputMismatchException e)
          {
           System.out.println("");
           System.out.println("Error, enter a number greater than 0");
           input.nextLine();
           System.out.println("");
          }
        }
        return Num;
      }
      public static void output(int i, int Num, long factorial)
      {
          System.out.println();
          for(i = 1; i <= Num; i++) 
          {
            factorial = factorial * i;
          }
         System.out.println("The factorial of " + Num + " is " + 
         factorial + ".");
      }
    }
只希望用户能够输入一个数字,然后在包含try catch的同时获取其阶乘://

查找n的阶乘应该只需要一个参数,即n。我将返回阶乘,我将使用BigInteger而不是long。最后,您可以使用备忘录来提高性能。即通过使用关系fn=n*fn-1。像


您的问题在于输出方法。它的构造函数有三个参数,但您使用两个参数调用它。事实上,您一直只需要一个参数。查看我的编辑

import java.util.InputMismatchException;
import java.util.Scanner;

public class Main
{
    public static void main(String[] args)
    {
        System.out.println("\tBasic Factorial Calculator");
        System.out.println();

        int number = getNumber();
        System.out.println();
        output(number);
    }

    public static int getNumber()
    {
        int Num = 0;
        boolean done = false;
        Scanner input = new Scanner(System.in);
        while(!done)
        {
            try
            {
                System.out.println("Enter the number you want to find a factorial of: ");
                Num = input.nextInt();
                if (Num <= 0) throw new InputMismatchException();
                done = true;
            }
            catch(InputMismatchException e)
            {
                System.out.println("");
                System.out.println("Error, enter a number greater than 0");
                input.nextLine();
                System.out.println("");
            }
        }
        return Num;
    }
    public static void output(int Num)
    {
        System.out.println();
        long factorial = 1;
        for(int i = 1; i <= Num; i++)
        {
            factorial = factorial * i;
        }
        System.out.println("The factorial of " + Num + " is " +
                factorial + ".");
    }
}
import java.util.InputMismatchException;
import java.util.Scanner;

public class Main
{
    public static void main(String[] args)
    {
        System.out.println("\tBasic Factorial Calculator");
        System.out.println();

        int number = getNumber();
        System.out.println();
        output(number);
    }

    public static int getNumber()
    {
        int Num = 0;
        boolean done = false;
        Scanner input = new Scanner(System.in);
        while(!done)
        {
            try
            {
                System.out.println("Enter the number you want to find a factorial of: ");
                Num = input.nextInt();
                if (Num <= 0) throw new InputMismatchException();
                done = true;
            }
            catch(InputMismatchException e)
            {
                System.out.println("");
                System.out.println("Error, enter a number greater than 0");
                input.nextLine();
                System.out.println("");
            }
        }
        return Num;
    }
    public static void output(int Num)
    {
        System.out.println();
        long factorial = 1;
        for(int i = 1; i <= Num; i++)
        {
            factorial = factorial * i;
        }
        System.out.println("The factorial of " + Num + " is " +
                factorial + ".");
    }
}