Java BigInteger

3

可能是重复问题:
BigInteger的使用困难

import java.math.BigInteger;  
public class KillerCode{  
    public static void main(String[]args){  
        BigInteger sum=null;  
        for(int i=1;i<=1000;i++){        
            sum=sum+Math.pow(i, i);  
            System.out.println(sum);     
        }    
    }  
} 

当我尝试运行此代码时,出现以下错误消息。

BigInteger,double的参数类型未定义运算符+。

我该如何解决这个问题? 谢谢。


2
Javadocs是你的好朋友。http://docs.oracle.com/javase/6/docs/api/java/math/BigInteger.html - Brian Roach
只是提醒一下,如果这不是为了学习目的,那么在您的情况下没有理由使用BigInteger。 - LanguagesNamedAfterCofee
4个回答

6

2
你还需要将 sum 重新初始化为某个值,它不能是 null。 - Ben
你能稍微解释一下吗? - KillerCode
@KillerCode,我添加了我认为可以解决你问题的内容。 - Austin
@Austin 抱歉,它不起作用。 - KillerCode
@KillerCode 你说它不工作,具体是什么意思?我们需要更多的信息。你是否收到了错误提示? - Austin
显示剩余3条评论

3

你不能这样做,因为sum不是整数,而是一个对象的引用。

与C ++不同,Java不允许运算符重载,因此您需要使用类方法执行操作。


1
  1. sum 初始化为有意义的、非 null 的值(你当前将其初始化为 null):

    BigInteger sum = BigInteger.ZERO;
    

    否则,表达式

    sum = sum.add(...)
    

    将没有意义(除非你想要一个 NullPointerException)。

  2. 使用静态工厂 BigInteger.valueOf(long) 将整数值映射到 BigInteger

    不要使用表达式 new BigInteger(i)。由 new BigInteger(i) 调用的构造函数是 BigInteger(byte[]),对于大于 255 的值(你有...),结果是错误的。

  3. 使用 BigInteger.add(BigInteger) 进行加法。

  4. 使用 BigInteger.pow(int) 替代 Math.pow(int,int);由于你正在进行(大)整数运算,避免任何将你的工作映射到浮点世界的东西,即 doublefloat,否则你将失去 BigInteger 的优势。


0

BigInteger没有定义+运算符。根据其此处找到的javadocs,您可以使用.add()函数来实现您想要的结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接