2017-02-24 77 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);