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

2
  • 3
    append a L to your numbers. I.e : 2863245995L and so on. Commented Nov 24, 2013 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. Commented Nov 24, 2013 at 14:00

2 Answers 2

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

Sign up to request clarification or add additional context in comments.

1 Comment

@Yetti You seems to be new here. Don't forget to accept the answer if it has helped you and solved your problem.
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};

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.