好的,所以这里是交易。我创建了一个程序,创建一个拥有150000000个不同地址的字节数组。然后我把它放到一个for循环中,该循环将为0-9之间的随机正数赋值,并将该数字输出到文件中。 ,所有的工作,但我遇到问题的地方是我真正试图平方米的地方。即时通讯使用类BigInteger尝试存储数字即时尝试平方。这是我的代码,试图把数字转换为BigInteger在Java中使用1.5亿位数字
for(int i = 0; i<150000000; i++)
{
square = square.add(BigInteger.valueOf(number[i]));
}
和我的编译器在运行时给我的错误:异常线程“main”显示java.lang.NullPointerException 在numberge.Numberge.main( Numberge.java:44) Java结果:1
我也试图让for循环迭代次数更少,并没有帮助。有任何想法吗?
,该方案给我的整个输出是: 运行: 完成生成/现在写入文件 在numberge.Numberge.main线程“主”显示java.lang.NullPointerException 平方 1.5 异常(Numberge的.java:43) Java结果:1所 生成成功(总时间:9秒),
整个代码是
import java.util.Random;
import java.io.*;
import java.math.BigInteger;
public class Numbersqu {
static byte[] number = new byte[150000000];
static Random generator = new Random(System.currentTimeMillis());
static BigInteger square = null;
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException
{
for(int i = 0; i<150000000; i++)
{
number[i] = (byte) Math.abs(generator.nextInt(9));
}
System.out.println("done generating/now writing to file");
File file = new File("number.txt");
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
for(int i = 0; i<150000000; i++)
{
bw.write(Integer.toString(number[i]));
}
bw.close();
System.out.println("generating number to square");
System.out.println(Integer.toString(number.length));
for(int i = 0; i<150000000; i++)
{
square = square.add(BigInteger.valueOf(number[i]));
}
System.out.println("Writing square to file");
File file2 = new File("square.txt");
if (!file2.exists())
{
file2.createNewFile();
}
FileWriter fw2 = new FileWriter(file2.getAbsoluteFile());
BufferedWriter bw2 = new BufferedWriter(fw2);
bw2.write(square.toString());
bw2.close();
}
}
就我所知,一旦我真的可以储存这个数字,我就会把它编成数字。
是什么号的长度是多少? –
粘贴你的代码给别人帮忙 –
看起来你可能需要在循环前初始化'square' –