程序输入一个数字,如果是一个阶乘数,则输出阶乘系列,否则为false

时间:2016-11-20 12:51:43

标签: java

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。我的代码几乎是正确的,但问题是,当我输入不属于阶乘系列的数字时,我没有得到False作为输出。请任何人都可以帮助我在这段代码中我可以保留System.out.print(&#34; False&#34;);言。

3 个答案:

答案 0 :(得分:2)

你不是在任何地方打印“False”。保持一个布尔标志来检查给定的数字是否是阶乘的,并相应地打印。

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");

    }

答案 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 :(得分: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");            
            }
        }
    }