为什么hasNextInt()方法不能用于大整数?

金珍瑟

我正在编写一个简单的程序,该程序从Scanner对象接收整数输入,确定它是否是回文,然后返回布尔值。

对于大多数数字,它都可以正常工作。但是,在此代码段中:

private static void programRunner() {
    System.out.print("Insert your number:");
    Scanner in = new Scanner(System.in);
    if (in.hasNextInt()) {
        int testNumber = in.nextInt();
        boolean result = palindromeTester(testNumber);
        System.out.println(result);
        programRunner();
    } else {
        System.exit(0);
    }
}

我添加了“ System.exit(0)”表达式,以使用户可以通过有意键入任何非整数值来轻松终止程序。问题是,当提供“相当大”的整数(例如“ 1234567654321”)时,代码将启动System.exit(0),这意味着无法将其识别为整数?

我相信问题出在hasNextInt方法的“默认半径”,它可能会限制它识别的整数值的大小。(该程序最多可以运行9位整数),但我不确定。还是递归有问题?

马克斯·沃尔默

因为intJava中的an32位,并且只能保存2^31 - 1(2147483647)作为最大值(另请参见Integer.MAX_VALUE)。

大于该值的值不是int,但是long(大于的值除外Long.MAX_VALUE,在这种情况下,您需要将值设为BigInteger。)

请参见Integer.MAX_VALUELong.MAX_VALUEScanner.nextInteger()Scanner.nextLong()Scanner.nextBigInteger()BigInteger

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么 Java 泛型不能用于静态方法?

为什么对泛型方法的这种覆盖只能用于1.6,而不能用于1.7?

为什么OptionT不能用于Try?

ngInfiniteScroll为什么不能用于表格?

为什么 basename 不能用于变量?

为什么我不能用方法添加?

为什么_不能用于表示方法重写中未使用/忽略的参数?

为什么Integer.parseInt方法不能用于拆分的字符串?

为什么范围不能用于管道库功能?

为什么pd.to_numeric不能用于大数?

为什么浮点数提升也不能用于算术?

为什么:hover不能用于tr元素?

为什么该复选框不能用于导航?

为什么constexpr成员不能用于static_assert?

为什么此代码不能用于大量数字?

为什么Pattern属性不能用于type =“ date”?

为什么我的函数不能用于无限列表?

为什么背景图片不能用于输入?

输入文件的accept属性不能用于.pdf,为什么?

为什么let命令不能用于添加实数?

为什么颜色不能用于stdscr?(PDCurses)

为什么 queryselectorAll 不能用于删除元素?

为什么懒惰的吸气剂只能用于原型,而不能用于类?

为什么返回呼叫者只能用于“列表”,而不能用于“地图”?

为什么多方法不能用作试剂/重组的功能?

为什么getClass()不能用作静态方法?

为什么代码不能用于malloc但可以用于非动态分配?

为什么节点shebang可用于Angular CLI但不能用于我的文件?

为什么我不能用 range() 打印随机整数 numpy 数组