java编程析因请帮助

时间:2014-10-07 21:30:51

标签: java joptionpane factorial

我参加了一个虚拟的高中课程,这不是我想象的那样,而且至少可以说我很困惑。我的作业是这样的:

练习6.1
在数学中,数字的阶乘用写n表示!并且是n和所有其他小于n的数的乘积。例如,5!是5 * 4 * 3 * 2 * 1。

  • 创建一个名为Factorial的新项目。
  • 编写一个采用整数作为参数的阶乘方法,并将结果作为参数返回 整数。它应该使用循环来计算阶乘。
  • 在main中,提示用户输入一个数字,然后调用factorial方法。显示返回的结果。

这是我到目前为止的代码:

import java.util.Scanner;
import javax.swing.JOptionPane;

class Factorial
{
    public static void main(String[] args) {
        String choice = JOptionPane.showInputDialog(null, "Enter a number.");
        int numberChoice = Integer.parseInt(choice);
        int triple;
        triple = factorialNumber(numberChoice);
        System.out.println(JOptionPane.showMessageDialog(null, triple, "Output:"));
    }

    // int num;
    //Scanner input = new Scanner(System.in);
    //num = input.nextInt();
    //int FactInput = factorialNumber(num);

    public static double factorialNumber(int){
        //declaring variables
        //int num;
        int fact=1; //placeholder
        //using the scanner
        // Scanner input = new Scanner(System.in);
        //user input
        System.out.println("Enter a number: ");
        // num = input.nextInt();
        //for statement
        for (int i=2;i<=num; i++){
            //multiple assignment
            fact=fact*i;
            //print the result
            System.out.print("The factorial of your number is ");
            return fact;

        }
        return fact;
    }
}

我从哪里开始? 感谢所有帮助 - 谢谢!!

4 个答案:

答案 0 :(得分:2)

似乎你大部分时间都没有。你不需要在for循环中返回。在for循环完成后,您只能返回阶乘,因为这是计算完成的时间。另外,不要担心在factorialNumber()方法中打印输出。您的方法找到该值,然后您可以在main方法中将其打印出来。

1.获取因子
的数量 2.将它发送到factorialNumber()方法
3.运行for循环,直到你的索引达到数字
4.返回值。
5.打印值

其他一些错误:
-System.out.println(JOptionPane.showMessageDialog(null,triple,&#34;输出:&#34;)); - &GT;省略System.out.println
-public static double factorialNumber(int){应该有&#34; NUM&#34;在&#34; int&#34;
之后 -remove SYstem.out.println并在for循环中返回

答案 1 :(得分:1)

使用long而不是in,更好的是,因子增长很快。 这是一个使用recursion

的简单函数
private static long factorial(int n) {
    return (n==1)?1:n*factorial(n-1);
}

System.out.println(factorial(20)); // gives 2432902008176640000

答案 2 :(得分:0)

System.out.println("Output: " + triple);

static int factorialNumber(int num) {

最后的阶乘函数中没有System.out.println。

删除循环内的返回;你会循环一次,然后返回。

尝试使用调试器中的单步选项。

答案 3 :(得分:0)

任何数字的因子总是快速增长。因此,您需要确保采用正确的数据类型。你的程序只接受int和Java,整数是32位,范围从-2,147,483,648到2,147,483,647。因此,如果您的因子计算超出了该int限制,那么您的程序可能无法给出预期结果。请参阅此链接factorial using big integer