此代码检测您可以使用哪种数据类型来存储从用户获得的数字。如果有多个合适的数据类型,则列出所有内容。
但是,代码无法满足正确执行-100000000000000(应该很长)
import java.util.Scanner;
import java.lang.Exception;
import java.math.BigInteger;
import java.util.InputMismatchException;
public class Mainn
{
public static void main(String args[])
{
Scanner console = new Scanner(System.in);
int size = console.nextInt();
BigInteger numbers[] = new BigInteger[size];
BigInteger Long = new BigInteger("9223372036854775808");
BigInteger Int = new BigInteger("4294967295");
for(int i=0;i<size;i++)
{
numbers[i]=console.nextBigInteger();
}
for(int i=0;i<size;i++)
{
System.out.print(numbers[i]);
if(numbers[i].compareTo(BigInteger.valueOf(-65536)) > 0 && numbers[i].compareTo(BigInteger.valueOf(65535))<0)
System.out.printf(" can be fitted in:\n* short\n* int\n* long\n");
else if(numbers[i].compareTo(Int.negate()) > 0 && numbers[i].compareTo(Int.subtract(BigInteger.valueOf(1)))<0)
System.out.printf(" can be fitted in:\n* int\n* long\n");
else if(numbers[i].compareTo(Long.negate()) > 0 && numbers[i].compareTo(Long.subtract(BigInteger.valueOf(1)))<0)
System.out.printf(" can be fitted in:\n* long\n");
else
System.out.print(" can't be fitted anywhere.");
}
}
}
答案 0 :(得分:6)
您的Long
初始化为2 ^ 32-1,这不符合您的示例编号,而Long.MAX_VALUE
的值为2 ^ 63-1。
同样命名变量Long
是一个非常糟糕的主意。它会影响作为JDK标准部分的类Long
,它违反了conventions,它建议使用类似variableName
的内容。