当我编译这段代码时,我得到的错误就像Integer数字太大了。虽然我声明它很长,但我不知道它为什么显示错误?

时间:2017-02-24 04:54:55

标签: java

为什么我的错误整数太大了。正如我宣布的那样长。 这是我的代码

 Scanner sc = new Scanner(System.in);    
    long x=sc.nextLong();    
    if(x>=-9223372036854775807 && x<=9223372036854775806)
    System.out.println("long");

1 个答案:

答案 0 :(得分:0)

由于数字为x literals-9223372036854775807而导致您收到9223372036854775806变量,因此未收到此错误。

因为默认情况下,数字文字被视为int,您需要在它们的末尾添加额外的L,以告诉编译器将它们视为long literal

您应该如何使用Long.MAX_VALUELong.MIN_VALUE常量进行此比较。如果您的最大值和最小值与Long.MIN_VALUE和Long.MAX_VALUE不同,则最佳做法是为它们创建constants然后再使用它们,例如

final static long MIN_VALUE = 100000L;
final static long MAX_VALUE = 10000000L;

if(x<MIN_VALUE && x>MAX_VALUE) System.out.println("This is an invalid value");