首頁  >  文章  >  Java  >  為什麼我的 Java 程式碼在使用 600851475143 時會拋出「整數太大」錯誤?

為什麼我的 Java 程式碼在使用 600851475143 時會拋出「整數太大」錯誤?

Patricia Arquette
Patricia Arquette原創
2024-11-07 18:30:03477瀏覽

Why Does My Java Code Throw an

解決600851475143 的「整數太大」錯誤

考慮以下程式碼片段:

public class Three {
    public static void main(String[] args) {
        Three obj = new Three();
        obj.function(600851475143);
    }

    private Long function(long i) {
        Stack<Long> stack = new Stack<>();

        for (long j = 2; j <= i; j++) {
            if (i % j == 0) {
                stack.push(j);
            }
        }
        return stack.pop();
    }
}

考慮以下程式碼片段:

程式碼使用傳遞給函數的文字600851475143 執行,它會拋出「整數太大」錯誤。要理解其中的原因,我們需要深入研究所涉及的資料類型。
  • 在 Java 中,存在原始資料類型,例如 int 和 long,它們表示沒有物件的數字。
  • int 是一個 32 位元有符號整數,這表示它可以表示 -2,147,483,648 到 2,147,483,647 之間的整數。
long

是一個 64 位元有符號整數,提供了更廣泛的值範圍,從 -9,223,372,036,854,775,808 到 9,223,372,036,8547,77。

obj.function(600851475143L);

這裡的問題是 600851475143 超出了 int 可表示的最大值。要解決此問題,我們需要透過在數字後面附加「L」後綴來使用 long 類型的文字:600851475143L。

透過此修改,程式碼將運行而不會遇到錯誤,並將傳回600851475143L 的最大素因子。

以上是為什麼我的 Java 程式碼在使用 600851475143 時會拋出「整數太大」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn