Как исправить этот код Java, который использует BigInteger? - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь решить третью проблему проекта 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 голосов
/ 21 сентября 2018

Удалить пробел в строке.

BigInteger N = new BigInteger("600851475143 ");

Теперь будет ...

BigInteger N = new BigInteger("600851475143");
0 голосов
/ 21 сентября 2018

Как было сказано выше, в вашей строке был символ пробела.Чтобы избежать таких ошибок, стоит использовать метод String.trim(), который удаляет пробелы в начале и в конце строки.

Что-то вроде:

String num = "600851475143 ";
BigInteger N = new BigInteger(num.trim());
0 голосов
/ 21 сентября 2018

удалить пробел в:

BigInteger N = new BigInteger("600851475143 ");

быть:

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