Java factorial format

你离开我真会死。 提交于 2019-12-13 11:06:38

问题


My factorial method is working correctly although I would like to change the output from just outputting the number and the factorial result. For example I would like if the user enters 6 for the output to say 6 * 5 * 4 * 3 * 2 * 1 = 720, instead of factorial of 6 is: 720.

int count, number;//declared count as loop and number as user input
    int fact = 1;//declared as 1
    Scanner reader = new Scanner(System.in);  // Reading from System.in
    System.out.println("Please enter a number above 0:");
    number = reader.nextInt(); // Scans the next token of the input as an int
    System.out.println(number);//prints number the user input
    if (number > 0) {
        for (i = 1; i <= number; i++) {//loop 
            fact = fact * i;
        }
        System.out.println("Factorial of " + number + " is: " + fact);
    }
    else 
    {
        System.out.println("Enter a number greater than 0");
    }
}

回答1:


create a string and store the numbers.

try something like this.

    int count, number;//declared count as loop and number as user input
    String s; //create a string
    Scanner reader = new Scanner(System.in);  // Reading from System.in
    System.out.println("Please enter a number above 0:");
    number = reader.nextInt(); // Scans the next token of the input as an int
    int fact = number;//store the number retrieved
    System.out.println(number);//prints number the user input
    if (number > 0) {
        s=String.valueOf(number);
        for (int i = 1; i < number; i++) {//loop 
            fact = fact * i;
            s = s +" * "+String.valueOf(number-i);
        }
        System.out.println(s+ " = " + fact);
    }
    else 
    {
        System.out.println("Enter a number greater than 0");
    }



回答2:


Check out this recursive approach: (check negative numbers yourself :D)

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int num = scanner.nextInt();
    System.out.println(getFactorialString(num, " = " + getFactorial(num)));
}

public static String getFactorialString(int num, String result) {
    if (num == 0) return "0 => 1";
    if (num == 1) {
        result = "" + num + "" + result;
    } else {
        result = getFactorialString(num - 1, result);
        result = "" + num + " x " + result;
    }
    return result;
}

public static int getFactorial(int num) {
    if (num == 0) return 1;
    return num * getFactorial(num - 1);
}


来源:https://stackoverflow.com/questions/46694009/java-factorial-format

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!