2017-02-24 45 views
0

我在java中创建了一个程序,它接受一个int作为输入并打印它的阶乘。例如,输入= 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); 

} 
} 

回答

2

检查,如果你在最后的循环周期,也就是说,如果i等于1。然后,你知道你在最后一个号码,你不需要打印x。

你可以这样说:

System.out.print(i); 
if(i != 1) { 
    System.out.print(" x "); 
} 

或类似这样的,如果你喜欢只有一条线路,使用所谓的三元运算符:

System.out.print((i != 1) ? i + " x " : i); 
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); 
} 
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); 

    } 
    } 

其中,系统只输出“X”如果我是大于1

 if(i > 1) { 
    System.out.print(" x "); 
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);