2013-11-24 18 views
10

誰もがなぜこのような配列を宣言できないのか教えてもらえますか?Javaのlong []配列を宣言する

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 ... 

のように長いにキャストすることを試みたが、何もxは、コンパイラがで問題を抱えているwhitch数である。このようLong.valueOf(x)も試みいろいろ書いを変更しません。

アイデア?

おかげで、事前に

+3

あなたの番号にLを付け加えます。私:2863245995Lなど。 –

+0

あなたは完璧な作品をありがとうございます。 – Yetti

+0

重要な原則は、Java式の型と値が、使用方法に依存しないことです。 11453115051は、その後のキャストやロング[]イニシャライザに関係なく、大規模なintリテラルです。 –

答えて

23

プレーン数は、Javaでintとして考えられています。 longに変換するInteger.MAX_VALUEより大きいLを追加します。

long[] powers = {..., 2863245995L, 11453115051L, ...}; 

整数リテラルdocs

によれば、それがASCII 文字Lまたはl(エル)と接尾辞れる場合種類longです。それ以外の場合は、タイプはintです。

文字l(ell)はしばしば数字1(1)と区別することが難しいため、接尾辞Lが好ましい。

+0

助けてくれてありがとう。 – Yetti

+0

@ Yetti、よろしいですか? – Masudul

+0

@ Yettiあなたはここで新しいようです。それがあなたを助け、あなたの問題を解決したならば、答えを受け入れることを忘れないでください。 –

3

あなたはこのような何かをしようとしたことがありますか?

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}; 
関連する問題