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/

10-09 05:25