如何在循环的阶乘表达式的末尾打印乘法符号?

时间:2017-02-24 23:13:05

标签: java for-loop format

我在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);

}
}

4 个答案:

答案 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);