Java 无法证明-1000000000000有资格作为长输入

Java 无法证明-1000000000000有资格作为长输入,java,java.util.scanner,long-integer,Java,Java.util.scanner,Long Integer,我编写了一个程序来确定任何输入是否适合java中各种数据类型的范围,以及是否打印出符合条件的数据类型 程序首先获取一个整数输入,以确定所需的总常数 我想测试一下资格。然后,它运行一个循环,循环次数由查询确定,以检查输入的每个常量的合格性 我面临的问题是--我正在检查单个输入的合格性,但当我输入“-1000000000000”(-1后跟14个零)时,没有输出,光标接收输入,然后无限闪烁 任何其他常量输入都会提供所需的输出,但只有在输入“-1000000000000”后,程序才会出现问题。很久以来,

我编写了一个程序来确定任何输入是否适合java中各种数据类型的范围,以及是否打印出符合条件的数据类型

程序首先获取一个整数输入,以确定所需的总常数 我想测试一下资格。然后,它运行一个循环,循环次数由查询确定,以检查输入的每个常量的合格性

我面临的问题是--我正在检查单个输入的合格性,但当我输入“-1000000000000”(-1后跟14个零)时,没有输出,光标接收输入,然后无限闪烁

任何其他常量输入都会提供所需的输出,但只有在输入“-1000000000000”后,程序才会出现问题。很久以来,我一直试图自己解决这个问题,因此任何线索都会对我有所帮助

这是我的代码-->

import java.util.*;
导入java.io.*;
导入静态java.lang.Math.pow;
类解决方案{
公共静态void main(字符串[]argh)
{
扫描仪sc=新的扫描仪(System.in);
int t=sc.nextInt();

对于(inti=0;i=-128&&x=(int)(pow(-2.00,15.00))&&x=(int)(pow(-2.00,31.00))&&x=(int)(pow(-2.00,63.00))&&x我在代码中看到您试图将
pow(-2.00,63.00)
解析为一个整数,它不会返回您期望的值

您只需在长数据类型检查中替换类型转换,如下所示:

if(x>=(long)(pow(-2.00,63.00)) && x<=(long)(pow(2.00,63.00)-1)){
    System.out.println("* long");
}

if(x>=(long)(pow(-2.00,63.00))&&x我在您的代码中看到您试图将
pow(-2.00,63.00)
解析为整数,而该整数不会返回您期望的值

您只需在长数据类型检查中替换类型转换,如下所示:

if(x>=(long)(pow(-2.00,63.00)) && x<=(long)(pow(2.00,63.00)-1)){
    System.out.println("* long");
}

if(x>=(long)(pow(-2.00,63.00))&&xLinks:即使这些常量不存在,
1LLinks:即使这些常量不存在,
1L