Java阶乘输出
我应该创建一个程序,要求用户输入一个数字,并取该数字的阶乘,然后询问他们是否要进行另一个阶乘(Y,N) 它应该是这样工作的:Java阶乘输出,java,output,factorial,Java,Output,Factorial,我应该创建一个程序,要求用户输入一个数字,并取该数字的阶乘,然后询问他们是否要进行另一个阶乘(Y,N) 它应该是这样工作的: 输入一个数字,取4的阶乘 4!=二十四 做另一个阶乘(Y,N)?Y 重复此操作,直到输入N 我的输出如下: 输入一个数字,取其阶乘: “做另一个阶乘吗?(Y,N)?” 4!=1无论我输入的是Y还是N 这是我的密码: import java.util.Scanner; public class factorial { public static void m
- 输入一个数字,取4的阶乘
- 4!=二十四
- 做另一个阶乘(Y,N)?Y
- 重复此操作,直到输入N
- 输入一个数字,取其阶乘:
- “做另一个阶乘吗?(Y,N)?”
- 4!=1无论我输入的是Y还是N
这是我的密码:
import java.util.Scanner; public class factorial { public static void main ( String [] args ) { Scanner input = new Scanner(System.in); System.out.print("Enter a number you want to take the factorial of: "); int num = input.nextInt(); int fact = 1; System.out.printf("%d! = %d\n ", num, fact, Factorial(num, fact)); } public static int Factorial(int num, int fact) { Scanner input = new Scanner(System.in); char foo; System.out.print("Do another factorial (Y,N)?"); foo = input.next().charAt(0); for (int i = 1; i >= num; i++) { fact *= i; if (foo == 'Y') { System.out.print("Do another factorial (Y,N)?"); foo = input.next().charAt(0); continue; } else { break; } } return fact; } }
import java.util.Scanner;
public class factorial
{
public static void main ( String [] args )
{
Scanner input = new Scanner(System.in);
System.out.print("Enter a number you want to take the factorial of: ");
int num = input.nextInt();
int fact = 1;
System.out.printf("%d! = %d\n ", num, Factorial(num, fact));
System.out.print("Do another factorial (Y,N)? ");
char foo = input.next().charAt(0);
while (foo != 'N')
{
System.out.print("Do another factorial (Y,N)? ");
foo = input.next().charAt(0);
System.out.print("Enter a number you want to take the factorial of: ");
num = input.nextInt();
System.out.printf("%d! = %d\n", num, Factorial(num, fact));
}
}
public static int Factorial(int num, int fact)
{
for (int i = 1; i <= num; i++)
{
fact *= i;
}
return fact;
}
import java.util.Scanner;
公共类阶乘
{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(System.in);
System.out.print(“输入一个你想取其阶乘的数字:”);
int num=input.nextInt();
int-fact=1;
System.out.printf(“%d!=%d\n”,num,阶乘(num,fact));
系统输出打印(“做另一个阶乘(Y,N)?”;
char foo=input.next().charAt(0);
而(foo!=“N”)
{
系统输出打印(“做另一个阶乘(Y,N)?”;
foo=input.next().charAt(0);
System.out.print(“输入一个你想取其阶乘的数字:”);
num=input.nextInt();
System.out.printf(“%d!=%d\n”,num,阶乘(num,fact));
}
}
公共静态整数阶乘(整数、整数事实)
{
对于(int i=1;i,以下是错误:
System.out.printf("%d! = %d\n ", num, fact, Factorial(num, fact))
您的输出不是真正的阶乘(num,fact)
,而是fact
,这应该是:
System.out.printf("%d! = %d\n ", num, Factorial(num, fact))
计算阶乘,但从不打印:
System.out.printf("%d! = %d\n ", num, fact, Factorial(num, fact));
应该是
System.out.printf("%d! = %d\n ", num, Factorial(num, fact));
此外,Factorial
函数没有使用fact
参数,因此应该删除它,并在函数中声明一个局部变量
最后,询问“是否需要另一个阶乘”应该在顶层完成,而不是在阶乘
函数中。您的代码也不使用用户输入的字符:您需要一个循环来检查用户的输入,并在输入Y
时继续。删除下面的代码行:
扫描仪输入=新扫描仪(System.in);
系统输出打印(“做另一个阶乘(Y,N)?”
从阶乘方法。您应该按照如下方式重构代码:
- 应该有一个方法,它接受一个
int
并返回它的阶乘,而不做其他事情
- 所有的输入/输出以及“Do other factorial?”循环都应该在
main()
中完成
这将使逻辑更容易正确。这将对您有所帮助
public static void main ( String [] args )
{
String yesno ="Y";
while(yesno.equalsIgnoreCase("y"))
{
Scanner input = new Scanner(System.in);
System.out.print("Enter a number you want to take the factorial of: ");
int num = input.nextInt();
System.out.printf("%d! = %d\n ",num,fact(num));
System.out.print("Do another factorial (Y,N)?");
Scanner inputKey = new Scanner(System.in);
yesno = inputKey.nextLine();
}
}
这里是阶乘函数:
public static int fact(int num)
{
if(num<=1)
{
return 1;
}else{
return (num*(fact(num-1)));
}
}
公共静态int事实(int num)
{
如果(numHow确切地说,我将如何实现一个循环来检查用户输入的是Y还是N,然后要求用户输入另一个数字?很抱歉,我对java非常陌生。我知道如何检查用户输入的是Y还是N,但现在我仍在想用户输入后如何再次进行阶乘计算Y@user1858350您可能需要编辑您的问题,并且把你的新代码放在一个单独的“更改后”块中。@ USE1858350,你几乎在那里:用“<代码> >(真)替换“<代码>”(FoO!=“N”)< /代码>,在用户进入<代码> Foo后,在循环内进行检查,并添加<代码>(Foo==n));< /C> >退出中间循环。“做另一个阶乘?”两次如果我输入Y,那么将重复,如果我输入N,它将要求我输入一个数字,进行计算并退出。也许我把if语句放错了位置?