簡體   English   中英

為什么 parseInt 在我的 java 項目 Euler #4 的代碼中不起作用?

[英]Why is parseInt not working in my code for project Euler #4 in java?

我嘗試通過將我的數字轉換為字符串、反轉它並將其轉換回數字來解決 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 給出以下錯誤:

線程“主”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)用於您的應用程序。

編輯:此外,您應該移動String reverse = ""; 在您的 for 循環中,因為您當前正在將要測試的所有數字一個接一個地附加到它,從而產生一個巨大的數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM