我正在尝试解决项目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");
}
}
}
}
答案 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());