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

时间:2018-09-21 14:51:45

标签: java biginteger

我正在尝试解决项目Euler的第三个问题,该问题需要一个 12 数字,并且问题是我编写的代码未运行:( 你能帮我解决吗? 该错误是如此令人困惑:

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");
        }

    }



}

}

3 个答案:

答案 0 :(得分:3)

删除以下位置的空间:

BigInteger N = new BigInteger("600851475143 ");

成为:

BigInteger N = new BigInteger("600851475143");

答案 1 :(得分:1)

删除字符串中的空格。

BigInteger N = new BigInteger("600851475143 ");

现在应该是...

BigInteger N = new BigInteger("600851475143");

答案 2 :(得分:1)

正如上面回答的那样,您的字符串中有一个空格符号。 为避免这种类型错误,值得使用String.trim()方法,该方法将删除字符串开头和结尾的空格。

类似:

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