2016-11-20 13 views
1
import java.util.*; 
class Factorial{ 

     void factNum(int n){ 
       int fact=1; 
      ArrayList<Integer> al=new ArrayList<Integer>(); 
       for(int i=1;fact<=n;i++){ 
        fact=fact*i; 
         al.add(i); 
        if(fact==n){ 
         for(int j:al){ 
         System.out.print(+j); 
         }} 

    } 

} 

     public static void main(String args[]){ 

      Scanner scan=new Scanner(System.in); 
      Factorial f=new Factorial(); 
      System.out.println("Enter the Integer"); 
      int num=scan.nextInt(); 
      f.factNum(num); 
} 
} 

私はこのコードを書いて、私が階乗である24を入力すると、私は出力として1 2 3 4を得るでしょう。入力23は偽として出力されるはずです。私のコードはほぼ正しいですが、問題は、階乗シリーズに属していない番号を入力すると、私は出力としてFalseを取得していないことです。どうかこのコードで私はSystem.out.print( "False")を保つことができます誰でも助けてください。ステートメント。数値を入力し、その階乗番号が出力されれば階乗系列else else false

+0

'factNum()'の結果を表示しません。 'factNum()' *に 'ArrayList 'を返します。返された結果に要素がある場合は、それらを出力します。もしそうでなければ、 '' False ''を出力します。 – David

+1

あなたは、達成しようとしていることを人々がより理解しやすくするために、プログラムをより良くフォーマットしようとするべきです。 –

答えて

1

次のコードに示すように、フラグ値を使用して、数値が階乗かどうかの状態を追跡できます。

public static void factNum(int n) { 

    int fact = 1; 
    ArrayList<Integer> al = new ArrayList<Integer>(); 

    boolean flag = false; 

    for (int i = 1; fact <= n; i++) { 
     fact = fact * i; 
     al.add(i); 
     if (fact == n) { 
      flag = true; 
      for (int j : al) { 
       System.out.print(+j); 
      } 
     } 
    } 

    if(!flag) 
     System.out.println("false"); 

} 
2

あなたは、与えられた数がそれに応じ階乗かないと印刷されているかどうかを確認するためにanywhere.Keepブールフラグを「偽」に印刷されていません。

void factNum(int n){ 
     int fact=1; 
     boolean flag = true; 
     ArrayList<Integer> al=new ArrayList<Integer>(); 
     for(int i=1;fact<=n;i++){ 
      fact=fact*i; 
      al.add(i); 
      if(fact==n){ 
       flag = false;//if factorial then make it false 
       for(int j:al){ 
        System.out.print(+j); 
       }} 

     } 
     if(flag) 
      System.out.println("False"); 

    } 
0

このコードを試してください。

void factNum(int n) { 
     int fact = 1; 
     ArrayList<Integer> al = new ArrayList<Integer>(); 
     int check = 0; 
     for (int i = 1; fact <= n; i++) { 
      fact = fact * i; 
      al.add(i); 
      if (fact == n) { 
       for (int j : al) { 
        System.out.print(+j); 
        check = 1; 
       } 
      } 
      else if (fact>n && check == 0) 
      { 
       System.out.println("False");    
      } 
     } 
    }