12

Can anyone tell me why cant i declare array like this?

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 says that the literal of type int is out of range. I also tried to to cast it to long like this

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

but nothing changed also tried someting like this Long.valueOf(x) where x is number whitch compiler has problem with.

Any ideas?

Thanks in advance

Yetti
  • 327
  • 1
  • 4
  • 17
  • 3
    append a L to your numbers. I.e : 2863245995L and so on. – Alexis C. Nov 24 '13 at 13:52
  • The key principle is that the type and value of a Java expression is independent of how it is being used. 11453115051 is an over-large int literal regardless of subsequent casting or being in a long[] initializer. – Patricia Shanahan Nov 24 '13 at 14:00

2 Answers2

28

Plain number is considered as int in java. Append L which are bigger than Integer.MAX_VALUE to convert long.

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

According to docs

An integer literal is of type long if it is suffixed with an ASCII letter L or l (ell); otherwise it is of type int.

The suffix L is preferred, because the letter l (ell) is often hard to distinguish from the digit 1 (one).

Masudul
  • 21,823
  • 5
  • 43
  • 58
  • @Yetti You seems to be new here. Don't forget to accept the answer if it has helped you and solved your problem. – Alexis C. Nov 24 '13 at 14:01
4

Have you tried something like this?

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