web-dev-qa-db-fra.com

déclaration d'un tableau long [] dans java

Quelqu'un peut-il me dire pourquoi je ne peux pas déclarer un tableau comme celui-ci?

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

Le compilateur indique que le littéral de type int est hors limites. J'ai aussi essayé de le lancer longtemps comme ça

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

mais rien n'a changé aussi essayé quelque chose comme ceci Long.valueOf(x) où x est le numéro avec lequel le compilateur a un problème.

Des idées?

Merci d'avance

12
Yetti

Le nombre brut est considéré comme int en Java. Ajoutez L qui sont plus grands que Integer.MAX_VALUE pour convertir long.

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

Selon docs

Un littéral entier est de type long s'il est suffixé d'une lettre ASCII lettre L ou l (ell); sinon, il est de type int.

Le suffixe L est préféré, car la lettre l (ell) est souvent difficile à distinguer du chiffre 1 (un).

26
Masudul

Avez-vous essayé quelque chose comme ça?

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