2016-11-23 106 views
1

我已經被要求創建一個程序,它將接收一個數字並且每個循環取1,直到它達到0,然後輸出每個數字和它們乘以找到fractorial並顯示它的工作,例如5 * 4 * 3 * 2 * 1 = 120

例如,如果用戶進入5的輸出應是

5 * 4 * 3 * 2 * 1 = 120

我嘗試沒有運氣

int factor = sc.nextInt(); 
    int count = 0; 
    int total = factor; 
    StringBuilder answer = new StringBuilder(); 
    answer.append(factor); 
    while(factor>0) 
    { 

     for(int i = factor; i >= 0; i--) 
     { 
      count++; 
      total = total*count; 
      total = total -1; 
      if(i==factor) 
      { 
       answer.append(" = ").append(total); 
      } 
      else 
      answer.append(" * ").append(String.valueOf(i)); 
     } 

    } 
    int sanswer=Integer.parseInt(answer.toString()); 
    return sanswer; 
} 
以下
+0

我想你說的是階乘,你可以看到這個:http://stackoverflow.com/questions/891031/is-there-a-method-that-c​​alculates-a-factorial-in-java –

+0

是的謝謝我試圖找到一個問題,但沒有找到一個解決方案生病看看 – studentprogrammer

回答

0

首先在每次迭代循環追加數i。然後決定追加*或最後=根據以下迭代是否爲最後一個。打印=後,只剩下打印結果編號。如果字符串包含非數字字符,則不能將字符串轉換爲int。

試試下面的代碼:

Scanner sc = new Scanner(System.in); 
int num = sc.nextInt(); 
long factorial = 1L; 
StringBuilder answer = new StringBuilder(); 

for (int i=num; i>0; i--) { 
    answer.append(i); 
    if (i-1>0) { 
     answer.append("*"); 
    } else { 
     answer.append("="); 
    } 
    factorial *= i; 
} 
answer.append(factorial); 
System.out.println(answer); 

輸入:8。輸出:8*7*6*5*4*3*2*1=40320

輸入:5。輸出:5*4*3*2*1=120

0

其實它是任務用於階乘計算。 You can find a various of realization here

如果你不想使用遞歸:

INT因子(INT輸入)

int x, fact = 1; 
    for (x = input; x > 1; x--) 
    fact *= x; 

    return fact; 
+0

我知道如何做到這一點,我嘗試它的原因另一種方式是因爲答案需要顯示的方式,因爲它需要像例如一樣返回5 * 4 * 3 * 2 * 1 = 120 – studentprogrammer

相關問題