public class dataType {
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int t=sc.nextInt();
for(int i=0;i<t;i++)
{
try
{
long x=sc.nextLong();
System.out.println(x+" can be fitted in:");
if(x>=-128 && x<=127)System.out.println("* byte");
if(x>=-1*(int)(Math.pow(2,15)) && x<=(int)(Math.pow(2,15)-1))System.out.println("* short");
if(x>=-1*(int)(Math.pow(2,31)) && x<=(int)(Math.pow(2,31)-1))System.out.println("* int");
if((x>=-1*(int)(Math.pow(2,63))) &&( x<=(int)(Math.pow(2,63)-1)))
System.out.println("* long");
}
catch(Exception e)
{
System.out.println(sc.next()+" can't be fitted anywhere.");
sc.next();
}
}
}
}
对于输入数字= -100000000000000,
预期输出= -100000000000000可以适用于:
* 长
实际输出= -100000000000000可适用于:
问题是它在最后一个if之后不打印消息
检查数字是否在长数据范围内的条件
类型。
最佳答案
您的逻辑会变得乏味。使用Wrapper类方法,这样就可以在不提供范围的情况下进行工作。
例如:
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
int x = 0;
for(int i = 0; i <=t;i++) {
x = sc.nextInt();
try {
if(x >= BYTE.MINVALUE && x <= BYTE.MAXVALUE) System.out.println("Byte");
//Same format for all required datatypes
}
catch(Exception e) {
System.out.println(sc.next()+" can't be fitted anywhere.");
sc.next();
}
}
}
希望这可以帮助!
关于java - 为什么输入-100000000000000的输出不正确?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57340311/