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 + ".");
}
}