思考了 1 小时后,我仍然无法弄清楚我的计算器出了什么问题。我制作了 3 个函数,其中包括main()
,calculateBinomialTheorem()
和factorial()
. 是的,factorial()
要计算系数。
public static void main(String[] args) {
Scanner a_input = new Scanner(System.in);
Scanner b_input = new Scanner(System.in);
Scanner n_input = new Scanner(System.in);
int a = 0;
int b = 0;
int n = 0;
System.out.println("Welcome to Binomial Theorem Solver:");
System.out.print("a: ");
a = a_input.nextInt();
System.out.print("b: ");
b = b_input.nextInt();
System.out.print("n: ");
n = n_input.nextInt();
System.out.print(calculateBinomialTheorem(a, b, n));
a_input.close();
b_input.close();
n_input.close();
}
private static int calculateBinomialTheorem(int a, int b, int n) {
int result = 0;
int coefficient = 0;
ArrayList<Integer> products = new ArrayList<Integer>();
for(int i = 1; i <= n; i++) {
int product = 0;
coefficient = factorial(n) / (factorial(i) * factorial(n - i));
product = (int) (coefficient*Math.pow(a, n - i)*Math.pow(b, i));
products.add(product);
}
for(int c : products) {
result += c;
}
return result;
}
private static int factorial(int num) {
int factorial = 1;
if(num > 0) {
for ( int c = 1 ; c <= num ; c++ )
factorial = factorial*c;
} else {
return 0;
}
return factorial;
}
我尝试使用 3、3、3 的值运行它,这应该给我 216 的答案,但它没有给出!为什么?每次我使用这些值运行它时,这就是我得到的错误:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at binomial_thorem_solver.Main.calculateBinomialTheorem(Main.java:46)
at binomial_thorem_solver.Main.main(Main.java:29)
我知道我将数字除以 0,但我不知道如何解决该问题。
请帮忙。
更新:感谢您的回答。你们都弄清楚了问题所在,但是还有另一个问题是循环迭代的时间少了一次,因为i
最初设置为 1。我将其设置为 0 并且它起作用了!