我在java中创建了一个程序,它以int作为输入并打印其factorial。例如输入= 5打印:5 x 4 x 3 x 2 x 1 = 120.但是,我找不到一种方法来摆脱它的末尾的乘法符号。我得到:5 x 4 x 3 x 2 x 1 x = 120.我能做些什么才能在最后摆脱它?这是我的代码:
import java.util.*;
public class Factorial {
public static void factorial(int input)
{
int sum = 1;
for(int i = input; i>=1; i--)
{
System.out.print(i+" x ");
sum *= i;
}
System.out.print(" = " + sum);
}
public static void main (String []args)
{
Scanner in = new Scanner (System.in);
System.out.println("Enter a number to obtain its factorial");
int a = in.nextInt();
factorial(a);
}
}
答案 0 :(得分:2)
检查您是否处于最后一个循环周期,即i
是否等于1.然后您知道您是否在最后一个号码,而您不需要打印x。
你可以这样做:
System.out.print(i);
if(i != 1) {
System.out.print(" x ");
}
或者像这样,如果你只使用一条线,使用所谓的三元运算符:
System.out.print((i != 1) ? i + " x " : i);
答案 1 :(得分:0)
在for循环中
if (i == 1) {
System.out.print(i);
} else {
System.out.print(i + " x ");
}
但是,您没有考虑用户何时输入0或负数。所以你可以改用它:
public static void factorial(int input)
{
if (input < 0) {
System.out.println("Input should be positive");
return;
}
if (input == 0) {
System.out.print("0! = 1" );
return;
}
int factorial = 1;
for(int i = input; i >= 1; i--) {
if (i == 1) {
System.out.print(i);
} else {
System.out.print(i + " x ");
}
factorial *= i;
}
System.out.print(" = " + factorial);
}
答案 2 :(得分:0)
将您的代码更改为此
import java.util.*;
public class Factorial {
public static void factorial(int input)
{
int sum = 1;
for(int i = input; i>=1; i--)
{
System.out.print(i);
if(i > 1) {
System.out.print(" x ");
sum *=i;
}
}
System.out.print(" = " + sum);
}
public static void main (String []args)
{
Scanner in = new Scanner (System.in);
System.out.println("Enter a number to obtain its factorial");
int a = in.nextInt();
factorial(a);
}
}
系统仅输出&#34; X&#34;如果我大于1
if(i > 1) {
System.out.print(" x ");
答案 3 :(得分:0)
我认为乘以1没有实际意义。因此,当输入== 1时,我将条件更改为结束,然后将1移动到System.out.print。 这将为您节省几行代码执行。
for(int i = input; i> 1; i--)
{
System.out.print(i+" x ");
sum *= i;
}
System.out.print("1 = " + sum);