如何更正此使用 BigInteger 的 java 代码?

how to correct this java code which uses BigInteger?

我正在尝试解决需要 12 位数的项目 Euler 的第三个问题,问题是我编写的代码不是 运行 : ( 你能帮我弄清楚吗? 错误是如此混乱:

Exception in thread "main" java.lang.NumberFormatException: For input string: "51475143 "
    at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.base/java.lang.Integer.parseInt(Integer.java:652)
    at java.base/java.math.BigInteger.<init>(BigInteger.java:546)
    at java.base/java.math.BigInteger.<init>(BigInteger.java:675)
    at Euler.main(Euler.java:9)

完整代码如下:

public static void main(String[] args) {

    BigInteger N = new BigInteger("600851475143 ");
    BigInteger PrimeNumber;

    for(long i=2;i<250000;i++)
    {
        String code=" ";
        for(long j=2;j<i;j++)
        {

            if(i%j==0)
                code="exit";
        }
        if(code=="exit")
            break;

        PrimeNumber=BigInteger.valueOf(i);
        BigInteger R=N.remainder(PrimeNumber);
        if(R.equals(0))
        {
            System.out.println(N.divide(R));
            System.out.println("That's The answer");
        }

    }



}

}

在 :

中删除 space
BigInteger N = new BigInteger("600851475143 ");

成为:

BigInteger N = new BigInteger("600851475143");

删除字符串中的space。

BigInteger N = new BigInteger("600851475143 ");

现在是...

BigInteger N = new BigInteger("600851475143");

正如上面的回答,您的字符串中有一个 space 符号。 为避免此类错误输入,值得使用 String.trim() 方法,该方法删除字符串开头和结尾的白色 space。

像:

String num = "600851475143 ";
BigInteger N = new BigInteger(num.trim());