首页 > 解决方案 > 检查java中原始数据类型的输入

问题描述

我被要求编写一个程序,该程序将输入一个数字并进行检查,其中所有原始数据类型(字节、短、整数、长)都适合。我编写了以下代码,但它没有通过所有测试案例:

import java.util.*;
import java.io.*;


class Solution {
    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>=-Byte.MAX_VALUE && x<=Byte.MAX_VALUE)
                    System.out.println("* byte");
                if(x>=-Short.MAX_VALUE && x<=Short.MAX_VALUE)
                    System.out.println("* short");
                if(x>=-Integer.MAX_VALUE && x<=Integer.MAX_VALUE)
                    System.out.println("* int");
                if(x>=-Long.MAX_VALUE && x<=Long.MAX_VALUE)
                    System.out.println("* long");                
            }
            catch(Exception e) {
                System.out.println(sc.next()+" can't be fitted anywhere.");
            }
        }
    }
}

标签: javatypes

解决方案


当然会失败。拿一个byte。在 Java 中,它表示为有符号的 8 位值(2 的补码表示法)。这意味着它的范围从-128到+127不等。您的逻辑说,如果它位于 b/w(包括两侧),-127 到 +127,它将是一个字节。-128 会失败。

替换-Byte.MAX_VALUEByte.MIN_VALUE,它会工作。


推荐阅读