2017-03-07 6 views
1

おはようございます!説明でJavaで階乗を作成する方法

私はJavaの初心者です。私は階乗を作ることについて質問があります。

結果だけを表示する階乗を作成することができました。私はここの構文があります。

import java.util.Scanner; 

public class DynamicFact { 
public static void main(String[] args){ 

    Scanner sc = new Scanner(System.in); 
    int anc = 1; 
    double fact = 1; 
    System.out.println("Enter your number : "); 
    int num = sc.nextInt(); 

    if (num < 0) { 
     System.out.println("Your number is not valid. Please enter another number."); 
    } else { 
     for (anc = 1; anc <= num; anc++) { 
      fact = fact * anc; 
     } 
     System.out.println("Factorial " + num + " is = " + fact); 
    } 

} 
} 

を、出力がある(例えば数である6):階乗6は720.0

=である。しかし誰かがこのような出力を見て作るために私を助けることができます。 階乗6は6 * 5 * 4 * 3 * 2 * 1 = 720.0です。 ユーザーが番号7を希望する場合、出力は次のようになります。 Factorial 7は7 * 6 * 5 * 4 * 3 * 2 * 1 = 5040.0

などとなります。

ご協力いただき誠にありがとうございます。どうもありがとうございます。

+0

のためにあなたが表示されますヒント: 'StringBuilder'を見てください。 – Bathsheba

+0

(質問とは無関係)「あなたの番号は無効です。別の番号を入力してください。」あなたがコードを知らないユーザーであると想像してください。あなたは何を尋ねますか? – Fildor

答えて

1

あなたが行くように算術式を構築するためのStringBuilderを使用してください:あなたが使用することができます

} else { 
    StringBuilder sb = new StringBuilder(); 
    for (anc = 1; anc <= num; anc++) { 
     if(anc > 1)sb.append(" * "); 
     sb.append(anc); 
     fact = fact * anc; 
    } 
    sb.append(" = ").append(fact); 
    System.out.println("Factorial " + num + " is " + sb); 
} 
+0

実際、質問から正確な出力を得るためには、numから1からnumの代わりに1にする必要があります。 – Fildor

+1

@Fildor true。私はそれを読者のための練習として残しておきます –

+0

'sb.insert(0、' for)何らかの理由でJavaBodsに 'StringBuilder'の' prepend'メソッドが含まれていませんでした。 – Bathsheba

0

シンプルなソリューション:

String result = "", separator = ""; 
for (anc = 1; anc <= num; anc++) { 
    fact = fact * anc; 
    result = anc + separator + result; 
    separator = " * "; 
} 
System.out.println("Factorial " + num + " is " + result + " = " + fact); 

をこれが6 Factorial 6 is 6 * 5 * 4 * 3 * 2 * 1 = 720.0

0
import java.util.Scanner; 
public class test { 
public static void main(String[] args){ 

    Scanner sc = new Scanner(System.in); 
    int anc = 1; 
    double fact = 1; 

    StringBuffer result = new StringBuffer(); 
    System.out.println("Enter your number : "); 
    int num = sc.nextInt(); 

    if (num < 0) { 
     System.out.println("Your number is not valid. Please enter another number."); 
    } else { 
     for (anc = 1; anc <= num; anc++) { 
      fact = fact * anc; 
      result.insert(0,Integer.toString(anc)+"*"); 
     } 

     System.out.println("Factorial " + num + " is = " + fact); 
     System.out.println(result.substring(0,result.length()-1)); 
    } 

} 
} 
関連する問題