将大文本数转换为BigInteger时的NumberFormatException

时间:2017-02-14 22:06:49

标签: java algorithm

我有一个包含大量数字的.dat文件,例如568e24 1.20536e8 1.3526e12 1.5145e11。我已经将这些数字输入为String,并存储在ArrayList中。我需要用这些数来计算和表示太阳系中的引力体。但是在java中它已经超过了Double和Int的上限。我想在Java中使用这些数字。

这是我的代码,它输入这些数据并将这些数据作为String存储在ArrayList中。

public static void main(String[] args) throws Exception{
    Scanner input = new Scanner(new File("solarsystem.dat"));
    ArrayList<String[]> BodyData = new ArrayList<String[]>();
    input.nextLine();
    while(input.hasNextLine()){
        String x = input.nextLine();
        String[] x1 = x.split("[^a-zA-Z0-9().]+");
        BodyData.add(x1);
    }

    System.out.println(BodyData.get(0)[0]);

我正在尝试使用BigInteger通过以下代码将String更改为BigIntiger:

    BigInteger reallyBig = new BigInteger("1898e24");
    System.out.print(reallyBig);

但输出错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: "1898e24"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.math.BigInteger.<init>(BigInteger.java:470)
at java.math.BigInteger.<init>(BigInteger.java:606)
at tryScanner.main(tryScanner.java:18)

所以...现在..我应该怎么做才能使用这个大数字,比如1898e24。我是否需要更改此号码的格式(1898e24),例如1898000000000 ......?

1 个答案:

答案 0 :(得分:0)

您可以使用BigIntegerwhich should be larger then you need等内容。