なぜ私がこのように配列を宣言できないのか誰にも教えてもらえますか?
_long[] powers = { 0, 0, 1, 7, 35, 155, 651, 2667, 10795, 43435,
174251, 698027, 2794155, 11180715, 44731051, 178940587,
715795115, 2863245995, 11453115051, 45812722347, 183251413675,
733006703275, 2932028910251, 11728119835307, 46912487729835,
187649967696555, 750599904340651, 3002399684471467};
_
コンパイラーは、int型のリテラルが範囲外であると言います。私もこのように長くキャストしてみました
_long[] powers = { 0, 0, 1, 7, 35, 155, 651, 2667, 10795, 43435,
174251, 698027, 2794155, 11180715, 44731051, 178940587,
715795115, (long)2863245995, (long)11453115051, (long)45812722347, etc ...
_
しかし、何も変更されず、このようなLong.valueOf(x)
を試してみました。ここで、xはコンパイラに問題がある数です。
何か案は?
前もって感謝します
プレーン番号はJavaではint
と見なされます。 L
を変換するには、Integer.MAX_VALUE
より大きいlong
を追加します。
long[] powers = {..., 2863245995L, 11453115051L, ...};
docs によると
整数リテラルは、ASCII文字Lまたはl(エル)が接尾辞として付いている場合は
long
型です。それ以外の場合はint
型です。文字l(エル)は、数字の1(1)と区別できないことが多いため、接尾辞Lが推奨されます。
このようなことを試しましたか?
long[] powers = { 0, 0, 1, 7, 35, 155, 651, 2667, 10795, 43435,
174251, 698027, 2794155, 11180715, 44731051, 178940587,
715795115L, 2863245995L, 11453115051L, 45812722347L, 183251413675L,
733006703275L, 2932028910251L, 11728119835307L, 46912487729835L,
187649967696555L, 750599904340651L, 3002399684471467L};