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
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 typeint
.Le suffixe L est préféré, car la lettre l (ell) est souvent difficile à distinguer du chiffre 1 (un).
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};