java - 检查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.");
}
}
}
}
解决方案
当然会失败。拿一个byte
。在 Java 中,它表示为有符号的 8 位值(2 的补码表示法)。这意味着它的范围从-128到+127不等。您的逻辑说,如果它位于 b/w(包括两侧),-127 到 +127,它将是一个字节。-128 会失败。
替换-Byte.MAX_VALUE
为Byte.MIN_VALUE
,它会工作。
推荐阅读
- react-native - react-native - [object] 不能用作本地方法参数
- flutter - 为什么我不能在子小部件中使用我为 onTap 传递的函数?
- loops - 尝试将姓名和年龄写入文本文件
- flutter - 如何在 Flutter 中将英文数字转换为另一种语言数字(我使用的是孟加拉语)?
- python - 具有透明框架和不透明边缘的图例
- javascript - 如何使用 Appium / webdriverio“点击”和/或“按下”按钮?
- c# - 带非字符串的两种方式数据/事件绑定 (Blazor)
- node.js - 如何停止数据库承诺阻塞 Express 服务器中的主线程?
- python-3.x - 带有正则表达式的熊猫系列上的rsplit不起作用
- r - 如何编辑 DT 列并保存更改以触发相关列中的计算?