You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigInteger使用*二元运算符报错:操作数类型不匹配求助

问题解决:BigInteger阶乘方法的错误修复

1. 运算符错误的原因与修复

BigInteger是Java中的引用类型对象,不能像int、long这类基本数据类型那样直接用*算术运算符做乘法操作,必须调用它提供的multiply()实例方法来完成乘法运算。你代码里的factorial * BigInteger.valueOf(i)写法违反了这个规则,这就是报错的直接原因。

把这行代码改成:

factorial = factorial.multiply(BigInteger.valueOf(i));

2. 循环逻辑的隐藏问题

你的for循环里有两处i++:一处是循环头部的迭代器自增,另一处是循环体内部的i++。这会导致每次循环i都会增加2,比如第一次循环i=1,执行后直接跳到3,漏掉了2这个乘数,最终计算的结果根本不是阶乘,必须删掉循环体内部的i++。

修正后的完整代码

public static BigInteger bigIntegerFactorialMethod(int number){
    int i =  1;
    BigInteger factorial = BigInteger.valueOf(1);
  
    for(i = 1; i <= number; i++){
        factorial = factorial.multiply(BigInteger.valueOf(i));
    }
  
    return factorial;
}

内容的提问来源于stack exchange,提问作者Jaret Sanchez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 03:32:42