2013-11-24 18 views
10

Kann mir jemand sagen, warum kann ich nicht array so erklären?deklariert long [] Array in Java

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}; 

Compiler sagt, dass das Literal des Typs int außerhalb des Bereichs liegt. Ich habe auch versucht es wie dieses

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

zu lange zu werfen, aber nichts änderte auch versucht someting wie diese Long.valueOf(x) wo x Nummer whitch Compiler hat Problem mit.

Irgendwelche Ideen?

Vielen Dank im Voraus

+3

fügen Sie ein L an Ihre Nummern an. Ie: 2863245995L und so weiter. –

+0

Danke funktioniert perfekt. – Yetti

+0

Das Schlüsselprinzip ist, dass der Typ und der Wert eines Java-Ausdrucks unabhängig davon ist, wie er verwendet wird. 11453115051 ist ein übergroßes int-Literal, unabhängig vom nachfolgenden Casting oder dem langen Initializer []. –

Antwort

23

Plain-Nummer wird als int in Java betrachtet. Fügen Sie L an, die größer sind als Integer.MAX_VALUE, um long zu konvertieren.

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

Nach docs

Ein Ganzzahlliteral ist vom Typ long wenn es mit einem ASCII- Buchstaben L oder l (ell) nachgestellt ist; ansonsten ist es vom Typ int.

Das Suffix L ist bevorzugt, da der Buchstabe l (ell) oft schwer zu von der Ziffer 1 (eins) zu unterscheiden ist.

+0

Danke das hat geholfen. – Yetti

+0

@Yetti, du bist willkommen – Masudul

+0

@Yetti Du scheinst hier neu zu sein. Vergessen Sie nicht, die Antwort zu akzeptieren, wenn es Ihnen geholfen und Ihr Problem gelöst hat. –

3

Haben Sie so etwas probiert?

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};