我参加了一个虚拟的高中课程,这不是我想象的那样,而且至少可以说我很困惑。我的作业是这样的:
练习6.1
在数学中,数字的阶乘用写n表示!并且是n和所有其他小于n的数的乘积。例如,5!是5 * 4 * 3 * 2 * 1。
这是我到目前为止的代码:
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;
}
}
我从哪里开始? 感谢所有帮助 - 谢谢!!
答案 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)
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