如何更正此使用 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());
我正在尝试解决需要 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");
}
}
}
}
在 :
中删除 spaceBigInteger 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());