为什么我的错误整数太大了。正如我宣布的那样长。 这是我的代码
Scanner sc = new Scanner(System.in);
long x=sc.nextLong();
if(x>=-9223372036854775807 && x<=9223372036854775806)
System.out.println("long");
答案 0 :(得分:0)
由于数字为x
literals
和-9223372036854775807
而导致您收到9223372036854775806
变量,因此未收到此错误。
因为默认情况下,数字文字被视为int
,您需要在它们的末尾添加额外的L
,以告诉编译器将它们视为long literal
。
您应该如何使用Long.MAX_VALUE
和Long.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");