如何解决为什么 parseInt 在我的 Java 项目 Euler #4 的代码中不起作用?
我尝试通过将我的数字转换为字符串,将其反转,然后将其转换回数字来解决 Project Euler #4。问题已在我的代码中注释掉。
package euler.proj;
public class Main {
public static void main(String[] args) {
//A palindromic number reads the same both ways.
// The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.
//Find the largest palindrome made from the product of two 3-digit numbers.
int palindrome = 0;
String reverse = "";
for(int i = 100*100; i<= 999*999; i++){
String pal = Integer.toString(i);
for(int j = pal.length()-1; j >= 0; j--)
reverse = reverse + pal.charAt(j);
int k = Integer.parseInt(reverse);
if (k == i)
palindrome = k;
}
System.out.println("The largest palindromic product of two 3-digit numbers is " + palindrome);
}
}
程序无法编译,IntelliJ 出现以下错误:
线程“main”中的异常java.lang.NumberFormatException:对于输入字符串:“000011000120001”
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:461)
at java.lang.Integer.valueOf(Integer.java:554)
at euler.proj.Main.main(Main.java from InputFileObject:15)
解决方法
数字 000011000120001
(或不同符号中的 11.000.120.001
)不适合 4 字节 Integer
(范围从大约 -2.147.000.000 到 2.147.000.000)。您可以将 Long.parseLong(number)
用于您的应用程序。
编辑:此外,您应该在 for 循环中移动 String reverse = "";
,因为您当前正在将您正在测试的所有数字一个接一个地附加到它,从而产生一个巨大的数字。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。