首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么parseInt不能在我的java项目Euler #4的代码中工作?

为什么parseInt不能在我的java项目Euler #4的代码中工作?
EN

Stack Overflow用户
提问于 2021-01-22 23:42:20
回答 1查看 41关注 0票数 1

我尝试通过将数字转换为字符串,将其反转,然后再将其转换回数字来解算Project Euler #4。这个问题在我的代码中被注释掉了。

代码语言:javascript
复制
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”

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-22 23:45:21

数字000011000120001 (或不同表示法中的11.000.120.001 )不适合4字节的Integer (大约在-2.147.000.000到2.147.000.000之间)。您可以将Long.parseLong(number)用于您的应用程序。

编辑:此外,您应该在for循环中移动String reverse = "";,因为您当前正在测试的所有数字一个接一个地附加到该循环中,从而产生一个巨大的数字。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65848231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档