好的,这就是交易。我制作了一个程序,该程序创建了一个具有 150000000 个不同地址的字节数组。然后我将其放入一个 for 循环中,该循环将为这些值分配一个介于 0-9 之间的随机正数,并将该数字输出到文件中。这一切都有效,但我遇到问题的地方是我实际上试图解决它的地方。我使用类 BigInteger 来尝试存储我试图平方的数字。这是我尝试将数字放入 BigInteger 的代码
for(int i = 0; i<150000000; i++)
{
square = square.add(BigInteger.valueOf(number[i]));
}
我的编译器在运行时给了我错误:在 numberge.Numberge.main(Numberge.java:44) Java Result: 1
我还尝试使 for 循环迭代的次数更少,但它没有帮助。有任何想法吗?
程序给我的整个输出是:运行:完成生成/现在写入文件平方 150000000 线程“main”中的异常 java.lang.NullPointerException at numberge.Numberge.main(Numberge.java:43) Java 结果:1 BUILD成功(总时间: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();
}
}
据我所知,一旦我可以实际存储数字,我就会将其平方。