Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中1.5亿位数的平方_Java_Math_Nullpointerexception_Biginteger - Fatal编程技术网

Java中1.5亿位数的平方

Java中1.5亿位数的平方,java,math,nullpointerexception,biginteger,Java,Math,Nullpointerexception,Biginteger,好的,交易是这样的。我制作了一个程序,创建了一个字节数组,它有15000000个不同的地址。然后我将其放入一个for循环,该循环将为值分配一个0-9之间的随机正数,并将该数字输出到一个文件。 这一切都是可行的,但我遇到问题的地方实际上是我试图解决问题的地方。我使用BigInteger类来存储我试图平方的数字。这是我尝试将数字转换为大整数的代码 for(int i = 0; i<150000000; i++) { square = square.add(BigInte

好的,交易是这样的。我制作了一个程序,创建了一个字节数组,它有15000000个不同的地址。然后我将其放入一个for循环,该循环将为值分配一个0-9之间的随机正数,并将该数字输出到一个文件。 这一切都是可行的,但我遇到问题的地方实际上是我试图解决问题的地方。我使用BigInteger类来存储我试图平方的数字。这是我尝试将数字转换为大整数的代码

for(int i = 0; i<150000000; i++)
    {
        square = square.add(BigInteger.valueOf(number[i]));
    }

for(int i=0;i我可以看到两个可能的问题,但是通过这个代码片段,没有提供足够的信息来真正知道这两个项目中的任何一个是真正的问题

  • 也许正方形没有被初始化。如果是这样,那么

    正方形=正方形。添加(

  • 将在
    square.add(…)
    调用处取消对空指针的引用,导致空指针异常

    修理这样的东西 正方形=新正方形(); 应该事先打电话

  • 可能
    number
    未初始化
  • 固定它与固定正方形相同

  • 也许
    number[i]
    缺少值。这在处理对象数组时经常发生

  • 就是这样,你的变量平方是空的

    static BigInteger square = null;
    
    在此处使用之前,将其初始化为某个值:

    for(int i = 0; i<150000000; i++)
        {
            square = square.add(BigInteger.valueOf(number[i]));
        }
    

    用于(int i=0;i数字的长度是多少?粘贴您的代码以提供帮助看起来您可能需要在循环之前初始化
    square
    。这是一种计算数字平方的有趣方法…发布一个复制结果的帖子。目前任何答案都可能只是猜测。我刚刚发布了我的全部源代码。我尝试了changing我的for循环只运行了10次,它仍然会给我相同的错误。我在其他for循环中使用的数字数组的值高达15000000。我将square初始化为null,这就是我认为可能存在问题的地方。OK,我这样做了,但我遇到了另一个问题。当我这样做时,无论我在初始化它时使用的是什么数字,它都是al方法的结尾只有9位数长。我让它输出为正方形。bitCount()它总是13或14。你是用值0或其他什么东西初始化的吗?首先我尝试了0,然后我做了90000000,然后,4,然后23,结果是相同的保持它为零,因为你以后添加到它。现在关于另一个问题,你是根据你的逻辑得到输出的。你每次都用类似的值填充它,因此得到类似的结果结果-number[i]=(byte)Math.abs(generator.nextInt(9));我使用行:square=square.add(biginger.valueOf(number[i]);将number[]的每个元素添加到square中。我认为这会起作用。你知道如何使它起作用吗
    for(int i = 0; i<150000000; i++)
        {
            square = square.add(BigInteger.valueOf(number[i]));
        }