【发布时间】:2018-09-15 17:15:43
【问题描述】:
我是 Java 新手,所以在条件句及其大小中使用十六进制数字时遇到问题。 Scanner 类也存在一些问题。我已经在 Java 文档中搜索了原始数据类型。
节目是关于;取一个数字,看看它可以写入哪种数据类型并打印出适当的数据类型。
import java.util.*;
import java.io.*;
import java.lang.Integer;
public class Solution{
public static void main(String []argh)
{
Scanner sc = new Scanner(System.in);
long 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>=0x81 || x<=0x7f)System.out.println("* byte");
if(x<=0x7fff || x>=0x8001)System.out.println("* short");
if(x<=0x7fffffff || x>=0x80000001)System.out.println("* int");
//if(x<= (0x7fffffffffffffff)|| x>=
//(0x8000000000000001))System.out.println("*long");
System.out.printf("\n\n%x\n\n",x);
System.out.println();
}
catch(Exception e)
{
System.out.println(sc.next()+" can't be fitted anywhere.");
}
}
}
}
问题:
我收到一条错误消息,注释“if()”条件“too large int :0x7fffffffffffffff”为什么会这样?
我通过注释一些“if()”来运行程序,并给它“10”以搜索可能的数据类型,但这次它只打印“int”数据类型。
如果我给它“0x7b”作为输入,它会执行到“catch()”部分。为什么?
你能解释一下吗?谢谢。
【问题讨论】:
标签: java types java.util.scanner