谁能告诉我为什么在使用 long 数据类型时出错

Can anyone tell me why it is giving error, while using long datatype

long x = sc.nextLong();
if (x < 9223372036854775807 && x > -9223372036854775808) 
{
System.out.println("* long");
}

if() 条件行出错

The literal 9223372036854775807 of type int is out of range

谁能告诉我如何重新爱它?

long x = sc.nextLong();

if (x < 9223372036854775807L && x > -9223372036854775808L) {
    System.out.println("* long");
}

要将数字文字指定为 long 而不是 int ,请在文字末尾添加 L(代表长)。最后没有“L”,编译器将数字识别为整数,并且 if 语句中指定的整数超出了整数的范围。