ホームページ  >  記事  >  Java  >  600851475143 を使用すると、Java コードで「整数が大きすぎます」エラーがスローされるのはなぜですか?

600851475143 を使用すると、Java コードで「整数が大きすぎます」エラーがスローされるのはなぜですか?

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,854,775,807 までのより広い範囲の値。

ここでの問題は、600851475143 が int で表現できる最大値を超えていることです。これを修正するには、番号 600851475143L に「L」接尾辞を追加して、long 型のリテラルを使用する必要があります。

obj.function(600851475143L);

この変更により、コードはエラーが発生することなく実行され、返されます。 600851475143L の最大の素因数。

以上が600851475143 を使用すると、Java コードで「整数が大きすぎます」エラーがスローされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。